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