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 }