MFC中使用sqlite3数据库时建表失败

小子松 2019-05-17 12:44:23
这是我写的一个连接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;
}
...全文
140 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuck_csdn_mother 2019-12-20
  • 打赏
  • 举报
回复
多了逗号,其实这些sql应该先在数据库管理软件里面先测试通过了再放程序里面
smwhotjay 2019-05-17
  • 打赏
  • 举报
回复
Anon 2019-05-17
  • 打赏
  • 举报
回复
CREATE TABLE IF NOT EXISTS Jilu(,Time varchar(10) NOT NULL UNIQUE, ...) 多了一个逗号。
Eleven 2019-05-17
  • 打赏
  • 举报
回复
先确认你的SQL语句没有啥问题~

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧