• 4731阅读
  • 5回复

第一次使用sqlite,ld报错 [复制链接]

上一主题 下一主题
离线zooood
 
只看楼主 倒序阅读 楼主  发表于: 2012-04-17
ld过程中报错:undefined reference to `_imp___ZN12QSqlDatabase17defaultConnectionE'

网上查了下,在pro文件中加了Qt += sql,但是没用,仍然报相同的错误

以为是sqlite驱动不对,但是查看了我的C:\QtSDK\Desktop\Qt\4.7.4\mingw\plugins\sqldrivers目录,里面已经包含了
libqsqlite4.a、libqsqlited4.a、qsqlite4.dll、qsqlited4.dll,应该是有驱动的。网上说qt默认包含sqlite驱动的

源码:

  1. #include <QtCore/QCoreApplication>
  2. #include <QtSql/QSqlDatabase>
  3. #include <QtSql/QSqlQuery>
  4. #include <QTextCodec>
  5. #include <QVariant>
  6. #include <QDebug>
  7. int main(int argc, char *argv[])
  8. {
  9. QCoreApplication a(argc, argv);
  10. QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
  11. QSqlDatabase dbconn=QSqlDatabase::addDatabase("QSQLITE"); //添加数据库驱动
  12. dbconn.setDatabaseName("mytest.db"); //在工程目录新建一个mytest.db的文件
  13. if(!dbconn.open()) { qDebug()<<"fdsfds"; }
  14. QSqlQuery query;//以下执行相关QSL语句
  15. query.exec("create table student(id varchar,name varchar)"); //新建student表,id设置为主键,还有一个name项
  16. query.exec(QObject::tr("insert into student values(1,'李刚')"));
  17. query.exec(QObject::tr("insert into student values(2,'苹果')"));
  18. query.exec(QObject::tr("insert into student values(3,'葡萄')"));
  19. query.exec(QObject::tr("insert into student values(3,'李子')"));
  20. query.exec(QObject::tr("insert into student values(4,’橘子')"));
  21. query.exec(QObject::tr("insert into student values(5,'核桃')"));
  22. query.exec(QObject::tr("insert into student values(6,'芒果')"));
  23. //query.exec(QObject::tr("select id,name from student where id>=1"));
  24. query.exec("select id,name from student where id>=1");
  25. while(query.next())//query.next()指向查找到的第一条记录,然后每次后移一条记录
  26. {
  27. int ele0=query.value(0).toInt();//query.value(0)是id的值,将其转换为int型
  28. QString ele1=query.value(1).toString();
  29. qDebug()<<ele0<<ele1;//输出两个值
  30. }
  31. query.exec(QObject::tr("drop student"));
  32. return a.exec();
  33. }


离线淳于半邪

只看该作者 1楼 发表于: 2012-04-18
是不是应该把那几个dll拷贝到你的工程目录下
离线uidab

只看该作者 2楼 发表于: 2012-04-18
回 楼主(zooood) 的帖子
编译成功,没遇见错误!!!!
pro文件附上,参考一下。
QT       += core sql

QT       -= gui

TARGET = testSQL
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线zooood
只看该作者 3楼 发表于: 2012-04-18
  1. QT += core
  2. Qt += sql
  3. QT -= gui
  4. TARGET = test2
  5. CONFIG += console
  6. CONFIG -= app_bundle
  7. TEMPLATE = app
  8. SOURCES += main.cpp
我的pro文件和你几乎一样,分外不解啊

离线zooood
只看该作者 4楼 发表于: 2012-04-18
我擦,原因找到了
Qt += sql
这一行把t弄成小写了
!!!!!!!!!
离线淳于半邪

只看该作者 5楼 发表于: 2012-04-18
用的qt creator,我还以为是vs
快速回复
限100 字节
 
上一个 下一个