這是我寫的一個連接sqlite資料庫的函式,在前面測驗部分建立一個user_database表時成功了,也可以插入資料。但是在建立下一個表“Jilu”時總是會彈出
。請問大佬們該怎么解決啊,我是剛接觸MFC和sqlite的萌新,大佬們看到了的幫忙看下,在線等。第一次發帖錯漏之處還請海涵
bool CROVSOFEWAREDlg::Connectmysqlite()
{
//創建資料庫 //sqlite3的資料庫句柄已經宣告為全域
zErrMsg = NULL;
rc = sqlite3_open("DataBase\\ShuJu.db", &my_sqlite); //打開指定的資料庫檔案,如果不存在將創建一個同名的資料庫檔案(ShuJu.db)
char sql[400] = "";
if (rc != SQLITE_OK)
{
sqlite3_close(my_sqlite); //打開失敗!
MessageBox(_T("資料庫打開失敗,請檢查后再操作!"), NULL, MB_ICONSTOP);
return FALSE;
}
sqlite3_free(zErrMsg);
// 創建表,名為“Jilu”
//測驗到底是哪里出錯
memset(sql, 0, sizeof(sql));
sprintf_s(sql, "CREATE TABLE IF NOT EXISTS user_database(Id int PRIMARY KEY NOT NULL, Name varchar(20) NOT NULL UNIQUE, Password varchar(20) NOT NULL)");// 創建一個表格
if (sqlite3_exec(my_sqlite, sql, NULL, NULL, &zErrMsg) != SQLITE_OK)
{
MessageBox(_T("操作失敗,資料庫鏈表生成錯誤!"), NULL, MB_ICONSTOP);
return FALSE;
}
//測驗插入資料
int initialNum = 3;
int rows;
char UserName[20];
int UserPasswrod;
memset(UserName, 0, 20);
strcpy(UserName, "Admin");
UserPasswrod = 12345678;
sprintf_s(sql, "INSERT INTO user_database (Id, Name, Password) VALUES (%d, '%s', '%s')", 1, UserName, "12345678");
int exit = sqlite3_exec(my_sqlite, sql, NULL, NULL, &zErrMsg); // 測驗內容到這里為止
memset(sql, 0, sizeof(sql));
sprintf_s(sql, "CREATE TABLE IF NOT EXISTS Jilu(,Time varchar(10) NOT NULL UNIQUE, KP double NOT NULL , KI double NOT NULL, KD double NOT NULL, depth_setpoint double, depth varchar(10), crpm varchar(10), mrpm varchar(10), temperature varchar(10), volt varchar(10) ");
sqlite3_exec(my_sqlite, sql, NULL, NULL, &zErrMsg);
if (sqlite3_exec(my_sqlite, sql, NULL, NULL, &zErrMsg) != SQLITE_OK)
{
MessageBox(_T("操作失敗,資料庫鏈表生成錯誤!"), NULL, MB_ICONSTOP);
return FALSE;
}
sqlite3_free(zErrMsg);
memset(sql, 0, sizeof(sql));
sprintf_s(sql, "INSERT INTO Jilu(Time, KP, KI,KD,depth_setpoint,crpm,mrpm,temperature,volt) VALUES ('%s',%.2lf,%.2lf,%.2lf,'%s','%s','%s','%s','%s')", "2018.5.6", K_P, K_I, K_D, "1", "1000", "990", "37", "80");
sqlite3_exec(my_sqlite, sql, NULL, NULL, &zErrMsg);
if (sqlite3_exec(my_sqlite, sql, NULL, NULL, &zErrMsg) != SQLITE_OK)
{
MessageBox(_T("插入資料失敗!"), NULL, MB_ICONSTOP);
return FALSE;
}
sqlite3_free(zErrMsg);
sqlite3_close(my_sqlite); //關閉
return TRUE;
}
uj5u.com熱心網友回復:
先確認你的SQL陳述句沒有啥問題~uj5u.com熱心網友回復:
CREATE TABLE IF NOT EXISTS Jilu(,Time varchar(10) NOT NULL UNIQUE, ...)多了一個逗號。
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
多了逗號,其實這些sql應該先在資料庫管理軟體里面先測驗通過了再放程式里面轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/27002.html
標籤:數據庫
