尝试截断表但输出是Segmentation fault(核心转储)。 以下是我的截断代码。 表名:DEPO 由于函数del_depo_data是从不同的地方调用的,并且数据库是从它被调用的地方打开的,所以没有编写代码来打开开放的数据库。
void del_depo_data()
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
char *sql;
sqlite3_stmt *res;
const char* data = "Callback function called";
/* Create merged SQL statement */
sql = "DELETE FROM TABLE DEPO";
rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
sqlite3_close(db);
return;
}
答案 0 :(得分:1)
<强>解决强>
答案 1 :(得分:0)
由于函数del_depo_data是从不同的地方调用的,并且数据库是从它被调用的地方打开的,所以没有编写代码来打开开放的数据库。
如果您在代码中的其他位置打开了数据库,则需要以某种方式将数据库句柄(sqlite3 *
)传递给此函数。就目前而言,您要声明一个局部变量sqlite3 *db
,但绝不会将其初始化为任何值。这会导致SQLite崩溃。
此外,DELETE FROM TABLE tablename
不是有效的SQLite语法。正确的语法只是DELETE FROM tablename
。