如果我運行下面的代碼(只有相關部分所示),我會得到錯誤信息:‘庫程序的呼叫順序’C++中使用SQLite:「圖書館例行的呼叫順序
// Open database
char *lang = "Spanish";
char *DBName = "Spanish.db";
sqlite3 *db;
int sqlret;
sqlret = sqlite3_open(DBName, &db);
if (sqlret != SQLITE_OK) {
printf("Can't open database: %s \n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
// Create Table
sqlite3_stmt *stmt;
char *sqlcommand;
sqlcommand = new char;
Start(sqlcommand, lang);
printf(sqlcommand);
sqlret = sqlite3_prepare_v2(db, sqlcommand, -1, &stmt, NULL);
if (sqlret != SQLITE_OK) {
printf("Error: %s \n", sqlite3_errmsg(db));
sqlite3_close(db);
return 2;
}
。
起動(a,b)爲以下功能:
void Start(char *command, char *language) {
sprintf(command,"CREATE TABLE IF NOT EXISTS 'Vocabulary' ("\
"'%s' TEXT NOT NULL, ", language);
strcat(command, "'Native Language' TEXT NOT NULL, " \
"'Times Asked' INT NOT NULL, " \
"'Times Correct' INT NOT NULL, " \
"'Times Wrong' INT NOT NULL);");
}
但是,如果我不定義SqlCommand的動態,但靜態的(我的意思是:字符*的SqlCommand = 「創建...」; ),它的工作原理。如果你幫助我,我將不勝感激!
只是挑剔:沒有任何C++代碼在那裏,只是C. –
@JoachimPileborg:錯了,有一個'new'(它甚至似乎是罪魁禍首):) –