我从一个库中复制了以下函数。
int sqlite3_open(const char *filename, sqlite3 **ppDb));
void sql_stmt(const char* stmt) {
char *errmsg;
int ret;
ret = sqlite3_exec(db, stmt, 0, 0, &errmsg);
if(ret != SQLITE_OK) {
printf("Error in statement: %s [%s].\n", stmt, errmsg);
}
}
现在我已经尝试向一些数据库查询添加变量,比如这个测试函数:
void test(const char database , const char query){
sqlite3_open("/sdcard/" + database);
sql_stmt("CREATE TABLE IF NOT EXISTS" + query + "(id INTEGER PRIMARY KEY, bar , baz)");
}
如何更正常量字符*
文本中的实现变量?
test("test_db.db", "test_table");
上面的功能当然是不工作的,但是我不知道如何解决它正确。。。
在C++中,通过使用std::string
而不是const char*
,可以非常容易地解决这个问题。
#include <string>
void test(const std::string& database , const std::string& query){
sqlite3_open(("/sdcard/" + database).c_str());
sql_stmt(("CREATE TABLE IF NOT EXISTS" + query + "(id INTEGER PRIMARY KEY, bar , baz)").c_str());
}