我在 Fedora 14 中使用 sqlite3 版本 3.6.23.1。我可以使用这样的命令提示符将表导出到文件中,
sqlite3 data.db
sqlite> .output sample.txt;
sqlite> select *from sample;
我想在应用程序级别处理这种情况。
我正在使用 sqlite3 开源“C”API 在应用程序级别执行此命令。
execute("delete from sample:);// working fine
execute(".output sample.txt"); //Not working
它的抛出错误称为"SQL error in sqlite3_exec: near ".": syntax error"
请建议我如何创建文件以使用此 API 导入数据。
API 的函数定义。
int execute(const char* fmt, ...)
{
char *err_messg;
int ret = 0, result = 0;
char sql_string[1024] = ""; //this honestly needs to be more elegant; will do for now
va_list args;
va_start(args, fmt);
ret = vsprintf(sql_string, fmt, args);
va_end(args);
printf("sql_string: %s\n", sql_string);
if (!ret)
result = 0;
else
result = 1;
if (result != -1)
{
if (sqlite3_exec(db_conn, sql_string, NULL, 0, &err_messg) == SQLITE_OK) //Actual API which will work with database.
{
return SUCCESS;
}
else
{
printf("\n SQL error in sqlite3_exec: %s\n", err_messg);
return DBEXCE_FAIL;
}
}
return SUCCESS;
}