当前位置:编程学习 > wap >>

关于qt连接数据库

如题,代码如下
#include <QSqlDatabase>
#include <QSqlQuery>

static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("database.db");
    if(!db.open())
           return false;
    QSqlQuery query;
    query.exec("CREATE TABLE student (id int primary key)");
    //query.exec("DELETE FROM student WHERE id = 1");
    return true;
}

static bool modifyDatabase(int num)
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("database.db");
    if(!db.open())
           return false;
    QSqlQuery query;
    query.exec("CREATE TABLE student (id int primary key)");
    query.prepare("INSERT INTO student (id) VALUES (:id)");
    query.bindValue(0, 5);
    query.exec();
    return true;
}

#endif // DATABASE_H

编译结果:
D:\Files\Graduate Project\3-12\sendToDatabase-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK__Debug\..\sendToDatabase\database.h:28: error: no matching function for call to 'QSqlQuery::bindValue(int, int)'

请教大侠们如何解决?谢谢! --------------------编程问答-------------------- query.bindValue(":id", 5);
--------------------编程问答--------------------
引用楼主 aaronhartman2 的回复:
如题,代码如下
#include <QSqlDatabase>
#include <QSqlQuery>

static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("database.db");
    if……

还是不行,报错如下:
D:\Files\Graduate Project\3-12\sendToDatabase-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK__Debug\..\sendToDatabase\database.h:28: error: no matching function for call to 'QSqlQuery::bindValue(const char [4], int)' --------------------编程问答-------------------- 自己顶一下 --------------------编程问答--------------------
引用 1 楼 hzymlx 的回复:
query.bindValue(":id", 5);

嗯,不错,顶 --------------------编程问答-------------------- 出现这个问题的原因是你没有添加QVariant Library,而query.bindValue(":id", 5);中的5是变量,需要添加QVariant Library这个库来指明。
--------------------编程问答-------------------- --------------------编程问答-------------------- 加上
#include <QVariant>   就可以了! --------------------编程问答-------------------- 没遇到过这个问题 学习了 --------------------编程问答-------------------- LZ的 query.bindValue(0, 5); 没有用错,qt是可以通过序列号来给 :变量 赋值的

请问LZ在工程里面有没有加上 QT += sql 
?
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,