找回密码
 立即注册
收起左侧

用qt自带的SQLITE无法插入数据

3
回复
4935
查看
[复制链接]
累计签到:4 天
连续签到:1 天
来源: 2015-6-14 11:06:16 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 Q小麦 于 2015-6-14 11:47 编辑

我的头文件是这样的
  1. #ifndef GGG_H
  2. #define GGG_H
  3. #include <QtSql>
  4. #include <QMessageBox>
  5. #include <QString>
  6. #include <QDebug>
  7. #include <QtSql/QSqlQuery>

  8. static bool connect ()
  9. {

  10. //连接数据库,如果不存在则新建一个
  11.     bool ok=QFile::exists("library.db");
  12.     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  13.     db.setDatabaseName("library.db");
  14.     if(!db.open())
  15.     {
  16.         QMessageBox::warning(0,"title","打开数据库失败");
  17.         return false;
  18.     }
  19.    
  20.     QSqlQuery query;
  21.     query.exec("create table student(id varchar PRIMARY KEY,password varchar);");
  22.     query.exec("create table stuBorrow(id varchar,bookcode1 varchar,bTime1 smalldatetime,rTime1 smalldatetime, bookcode2 varchar,bTime2 smalldatetime,rTime2 smalldatetime,");
  23.     query.exec("create table manager(id varchar PRIMARY KEY,password varchar);");
  24.    

  25.     query.exec("select * from student ");
  26.         while(query.next())
  27.         {
  28.             QString a=query.value(1).toString();
  29.             qDebug()<<a;
  30.         }

  31.    QSqlQuery query2;
  32.      query2.exec("create table book(bookCode varchar PRIMARY KEY,bookName varchar,author varchar,num int);");
  33.      query2.exec("select * from book ");
  34.             while(query2.next())
  35.             {
  36.                 QString a=query2.value(1).toString();
  37.                 qDebug()<<a;
  38.             }

  39.      

  40.     return true;
  41. }

  42. #endif // GGG_H
复制代码
在另外的cpp文件中对book表插入数据
  1. void MainWindow::on_addSureButton_clicked()
  2. {

  3.     int n=ui->amountEdit->text().toInt();
  4.     QSqlQuery query;
  5.      query.prepare("INSERT INTO book(bookCode,bookName,author,num) "
  6.                        "VALUES (:bookCode, :bookName, :author, :num)");
  7.          query.bindValue(":bookCode", ui->bookCodeEdit->text());
  8.          query.bindValue(":bookName", ui->bookNameEdit->text());
  9.          query.bindValue(":author", ui->authorEdit->text());
  10.          query.bindValue(":num", n);
  11.          query.exec();

  12.          ui->bookCodeEdit->clear();
  13.          ui->bookNameEdit->clear();
  14.          ui->authorEdit->clear();
  15.          ui->amountEdit->clear();
  16.          ui->bookCodeEdit->setFocus();
  17. }
复制代码
但是数据没有插入到表中,
我还创建了一个student的表,但是那个可以插入数据,请问是为什么
回复

使用道具 举报

累计签到:4 天
连续签到:1 天
2015-6-14 11:41:46 显示全部楼层
本帖最后由 Q小麦 于 2015-6-14 11:48 编辑

找不出原因,求大神回答
回复 支持 反对

使用道具 举报

尚未签到

2015-6-14 22:54:51 显示全部楼层
分开测试嘛,你可以单独用insert into book values(xxx,xxx,xxx,xxx)插入一些没用数据看看有没有多一条记录,如果有记录,说明你的第二个cpp有问题;如果没有,那就前面找原因了,比如table不存在
回复 支持 反对

使用道具 举报

累计签到:4 天
连续签到:1 天
2015-6-15 21:42:39 显示全部楼层
已经找到原因了,把那个number改掉就可以了,谢谢解答
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了