00001 #include <stdio.h> 00002 #include <string.h> 00003 #include "dbmi.h" 00004 00011 int 00012 db_convert_Cstring_to_value (Cstring, sqltype, value) 00013 char *Cstring; 00014 int sqltype; 00015 dbValue *value; 00016 { 00017 int i; 00018 double d; 00019 00020 switch (db_sqltype_to_Ctype(sqltype)) 00021 { 00022 case DB_C_TYPE_STRING: 00023 return db_set_value_string(value, Cstring); 00024 case DB_C_TYPE_INT: 00025 i = 0; 00026 sscanf(Cstring, "%d", &i); 00027 db_set_value_int(value, i); 00028 break; 00029 case DB_C_TYPE_DOUBLE: 00030 d = 0.0; 00031 sscanf(Cstring, "%lf", &d); 00032 db_set_value_double(value, d); 00033 break; 00034 case DB_C_TYPE_DATETIME: 00035 return db_convert_Cstring_to_value_datetime (Cstring, sqltype, value); 00036 default: 00037 db_error("db_convert_Cstring_to_value(): unrecognized sqltype"); 00038 return DB_FAILED; 00039 } 00040 return DB_OK; 00041 } 00042 00049 int 00050 db_convert_value_to_string(value, sqltype, string) 00051 dbValue *value; 00052 int sqltype; 00053 dbString *string; 00054 { 00055 char buf[64]; 00056 char *bp; 00057 00058 bp = buf; 00059 if (db_test_value_isnull(value)) 00060 { 00061 *buf = 0; 00062 } 00063 else 00064 { 00065 switch (db_sqltype_to_Ctype(sqltype)) 00066 { 00067 case DB_C_TYPE_INT: 00068 sprintf (buf, "%d",db_get_value_int(value)); 00069 break; 00070 case DB_C_TYPE_DOUBLE: 00071 sprintf (buf, "%lf",db_get_value_double(value)); 00072 break; 00073 case DB_C_TYPE_STRING: 00074 bp = db_get_value_string(value); 00075 break; 00076 case DB_C_TYPE_DATETIME: 00077 return db_convert_value_datetime_into_string (value, sqltype, string); 00078 default: 00079 db_error ("db_convert_value_into_string(): unrecongized sqltype-type"); 00080 return DB_FAILED; 00081 } 00082 } 00083 return db_set_string(string, bp); 00084 }