尝试按用户指定的值更新表。但价值观没有得到更新。
cout<<"\nEnter Ac No"<<endl;
cin>>ac;
cout<<"\nEnter Amount"<<endl;
cin>>amt;
/* Create merged SQL statement */
sql = "UPDATE RECORDS set BAL = '%d' where ACCOUNT_NO = '%d'",amt, ac;
/* Execute SQL statement */
rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
如果我将BAL和ACCOUNT_NO替换为某个整数值而不是占位符,那么它工作正常。
答案 0 :(得分:-1)
您的sql字符串未正确创建。
如果您期望此代码
sql = "UPDATE RECORDS set BAL = '%d' where ACCOUNT_NO = '%d'",amt, ac;
以导致
"UPDATE RECORDS set BAL = '1' where ACCOUNT_NO = '2'"
哪里
amt = 1和ac = 2然后你需要使用这样的字符串格式化调用。
// the buffer where your sql statement will live
char sql[1024];
// write the SQL statment with values into the buffer
_snprintf(sql,sizeof(sql)-1, "UPDATE RECORDS set BAL = '%d' where ACCOUNT_NO = '%d'",amt, ac);
buff[sizeof(sql)-1]='\0';
在您的特定平台_snprintf(...)
上可能是snprintf(..)
或其他类似名称的功能。您的编译器也可能会警告缓冲区操作安全漏洞。根据需要选择合适的替代品