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 }