我在Linux中编写了一个C程序,它读取本地Sqlite3 DB来更新远程MySQL DB。当Sqlite中的可选字段为空时,我在执行select时得到字符串"(null)“。这以远程MySQL数据库中的许多"(null)“字符串结尾。
当表的字段为空时,Sqlite3中是否有任何获得空字符串的标志或配置选项?
编辑:
作为CL。在构建sql_query时,提到的是snprintf函数,它为NULL值创建了"(null)“字符串。这不是我想要的,所以我想我必须检查每个值,看看它是否为空?有更好的办法吗?在这个例子中,这并不重要,但在真正的例子中,有很多字段。
示例代码:这是在sqlite之后执行的回调函数,然后我用获得的数据构建一个sql查询,以更新远程MySQL:
static int callback_sync_Table(void *NotUsed, int argc, char **argv, char **azColName){
int rc;
char *zErrMsg = NULL;
char sql_query[512];
memset(sql_query, '\0', sizeof(sql_query));
snprintf(sql_query, sizeof(sql_query)-1, "INSERT INTO table(field_1,field_2,field_3) VALUES("
"\"%s\",\"%s\",\"%s\") ON DUPLICATE KEY UPDATE "
"field_1=\"%s\",field_2=\"%s\",field_3=\"%s\";",
argv[0], argv[1], argv[2],
argv[0], argv[1], argv[2],);
if(mysql_query(mysql_db_conn, sql_query)){
fprintf(stderr, "MySQL error: %s\n", mysql_error(mysql_db_conn));
syslog(LOG_DEBUG, "MySQL error: %s", mysql_error(mysql_db_conn));
}
return 0;}
https://stackoverflow.com/questions/33899157
复制相似问题