当前位置: 代码迷 >> QT开发 >> 很简单的一个程序,QT上使用sqlite 插入数据无效
  详细解决方案

很简单的一个程序,QT上使用sqlite 插入数据无效

热度:4874   发布时间:2013-02-26 00:00:00.0
很简单的一个程序,QT下使用sqlite 插入数据无效,
先看源代码
#include <QtGui/QApplication>
#include "widget.h"
#include <string.h>
#include <QTextEdit>
#include <QTextCodec>
#include <QtSql/QSQLiteDriver>
#include <QtSql/QSqlDatabase>
#include <QtSql/qsql.h>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QDebug>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextEdit disp;
    disp.resize(600,400);
    disp.show();
    QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("mydb");
    if(!db.open())
    {
        qDebug()<<db.lastError();
        return 1;
    }
    else
    {
     QSqlQuery query(db);
     query.exec("creat tabel person(id int primary key,firstname varchar(20),lastname varchar(20)) ");
     query.exec("INSERT INTO person (id,firtname,lastname)"
                "VALUES (1,'zhang','1')");
     query.exec("INSERT INTO person (id,firtname,lastname)"
                "VALUES (2,'ZHT','12')");
     query.exec("INSERT INTO person (id,firtname,lastname)"
                "VALUES (3,'SW','11')");
     query.exec();
            //if(query.exec("select * from person"))
    query.first();
           // while(query.next())
             {
                 QString result=query.value(0).toString()+"___"+query.value(1).toString()+query.value(2).toString();
                 disp.append(result);
             }
     }
       return a.exec();
}
报告的警告是:QSqlQuery::value: not positioned on a valid record
说我value()值无效,怀疑是没有写进数据库内。请高手看下。

------解决方案--------------------------------------------------------
写没写成功,你打开sqlite表不就看到了? solaris有sqlite工具,windows肯定也有的。

你的代码我标注为红色的去去掉,那句没什么意思
QSqlQuery query(db);
  query.exec("creat tabel person(id int primary key,firstname varchar(20),lastname varchar(20)) ");
  query.exec("INSERT INTO person (id,firtname,lastname)"
  "VALUES (1,'zhang','1')");
  query.exec("INSERT INTO person (id,firtname,lastname)"
  "VALUES (2,'ZHT','12')");
  query.exec("INSERT INTO person (id,firtname,lastname)"
  相关解决方案