2024年4月21日发(作者:)

sqlite3 delete from 回调函数

在 SQLite3 中,DELETE FROM 语句用于从表中删除数据。如果

你想在执行 DELETE FROM 时执行回调函数,可以结合使用

sqlite3_exec 函数和自定义的回调函数。

以下是一个简单的示例,演示如何使用 sqlite3_exec 和回调函

数来在执行 DELETE FROM 时触发回调:

#include

#include

// 自定义回调函数

int my_callback(void *NotUsed, int argc, char **argv,

char **azColName) {

int i;

for (i = 0; i < argc; i++) {

printf("%s = %sn", azColName[i], argv[i] ?

argv[i] : "NULL");

}

printf("n");

return 0;

}

1 / 4

int main() {

sqlite3 *db;

char *zErrMsg = 0;

int rc;

// 打开数据库

rc = sqlite3_open("", &db);

if (rc) {

fprintf(stderr, "Can't open database: %sn",

sqlite3_errmsg(db));

return rc;

} else {

fprintf(stderr,

successfullyn");

}

// 创建表

const char *sql_create = "CREATE TABLE IF NOT EXISTS

test_table (id INT, name TEXT);";

rc = sqlite3_exec(db, sql_create, 0, 0, &zErrMsg);

if (rc != SQLITE_OK) {

2 / 4

"Opened database

fprintf(stderr, "SQL error: %sn", zErrMsg);

sqlite3_free(zErrMsg);

return rc;

} else {

fprintf(stdout, "Table created successfullyn");

}

// 插入一些数据

const char *sql_insert = "INSERT INTO test_table (id,

name) VALUES (1, 'John');"

"INSERT INTO test_table (id,

name) VALUES (2, 'Doe');";

rc = sqlite3_exec(db, sql_insert, 0, 0, &zErrMsg);

if (rc != SQLITE_OK) {

fprintf(stderr, "SQL error: %sn", zErrMsg);

sqlite3_free(zErrMsg);

return rc;

} else {

fprintf(stdout,

successfullyn");

}

3 / 4

"Records created

// 在执行 DELETE FROM 时使用回调函数

const char *sql_delete = "DELETE FROM test_table;";

rc = sqlite3_exec(db, sql_delete, my_callback, 0,

&zErrMsg);

if (rc != SQLITE_OK) {

fprintf(stderr, "SQL error: %sn", zErrMsg);

sqlite3_free(zErrMsg);

} else {

fprintf(stdout,

successfullyn");

}

// 关闭数据库

sqlite3_close(db);

return 0;

}

请注意,在这个例子中,my_callback 函数被传递给

sqlite3_exec,这样在执行 DELETE FROM 时,它会被调用。在实际

应用中,你可能需要根据自己的需求来编写更复杂的回调函数。

4 / 4

"Records deleted