如何获得发送到数据库的精确SQL语句
我想打印出发送到数据库的确切SQL语句,用于日志记录。我看过sqlite3_sql,但它实际上并没有打印sql语句,只是我用作sqlite3_prepare_v2输入的原始sql 这是我的函数,它向一行添加一个值,我还想打印sql语句如何获得发送到数据库的精确SQL语句,sql,c,sqlite,Sql,C,Sqlite,我想打印出发送到数据库的确切SQL语句,用于日志记录。我看过sqlite3_sql,但它实际上并没有打印sql语句,只是我用作sqlite3_prepare_v2输入的原始sql 这是我的函数,它向一行添加一个值,我还想打印sql语句 int add_value(sqlite3* db, sqlite3_stmt * stmt, const char* oid, const char* value) { char sql[256] = {0}; sprintf(sql, "UPD
int add_value(sqlite3* db, sqlite3_stmt * stmt, const char* oid, const char* value)
{
char sql[256] = {0};
sprintf(sql, "UPDATE table1 SET Value=? WHERE Field1=\"%s\"", oid);
printf("%s\n", sql);
int ret = ::sqlite3_prepare_v2(
db,
sql,
strlen(sql),
&stmt,
0 );
/* How do I print out the sql statement to be sent to the database? */
ret = ::sqlite3_bind_text( stmt, 1, value, strlen(value), 0 );
ret = sqlite3_step(stmt);
return ret;
}
作为一点背景知识,我将向数据库中插入整数和字符串。那么使用什么呢?其目的是简化字符串的处理——即是否在值周围加引号取决于数据类型。但出于调试目的,我确实希望记录sql语句。原始sql语句和绑定参数值都会发送到数据库 没有读取参数值的机制。 调用
sqlite3\u bind.*
时必须记录这些值