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


发布评论