• 7629阅读
  • 2回复

qt4.5连接access数据库的奇怪问题。。。 [复制链接]

上一主题 下一主题
离线mkyang0627
 
只看楼主 正序阅读 楼主  发表于: 2009-03-17
我用qt4.5连接access数据库,做了个登陆界面,用户名密码保存在access里,但是总是有这个错误:

警告:
D:/ssdialog/ssdialog.cpp:26: undefined reference to `_imp___ZN12QSqlDatabase17defaultConnectionE'
D:/ssdialog/ssdialog.cpp:26: undefined reference to `_imp___ZN12QSqlDatabase11addDatabaseERK7QStringS2_'
D:/ssdialog/ssdialog.cpp:27: undefined reference to `_imp___ZN12QSqlDatabase15setDatabaseNameERK7QString'
D:/ssdialog/ssdialog.cpp:28: undefined reference to `_imp___ZN12QSqlDatabase4openEv'
D:/ssdialog/ssdialog.cpp:31: undefined reference to `_imp___ZN12QSqlDatabaseC1Ev'
D:/ssdialog/ssdialog.cpp:31: undefined reference to `_imp___ZN9QSqlQueryC1ERK7QString12QSqlDatabase'
D:/ssdialog/ssdialog.cpp:31: undefined reference to `_imp___ZN12QSqlDatabaseD1Ev'
D:/ssdialog/ssdialog.cpp:31: undefined reference to `_imp___ZN12QSqlDatabaseD1Ev'
D:/ssdialog/ssdialog.cpp:33: undefined reference to `_imp___ZN9QSqlQuery4execERK7QString'
D:/ssdialog/ssdialog.cpp:34: undefined reference to `_imp___ZN9QSqlQuery4nextEv'
D:/ssdialog/ssdialog.cpp:36: undefined reference to `_imp___ZNK9QSqlQuery5valueEi'
D:/ssdialog/ssdialog.cpp:38: undefined reference to `_imp___ZNK9QSqlQuery5valueEi'
D:/ssdialog/ssdialog.cpp:43: undefined reference to `_imp___ZN9QSqlQueryD1Ev'
D:/ssdialog/ssdialog.cpp:43: undefined reference to `_imp___ZN9QSqlQueryD1Ev'
D:/ssdialog/ssdialog.cpp:51: undefined reference to `_imp___ZN12QSqlDatabase5closeEv'
D:/ssdialog/ssdialog.cpp:51: undefined reference to `_imp___ZN12QSqlDatabaseD1Ev'
D:/ssdialog/ssdialog.cpp:51: undefined reference to `_imp___ZN12QSqlDatabaseD1Ev'

错误:
error: collect2: ld returned 1 exit status

有问题的程序如下:(只有可能是这块有问题,因为我试了,屏蔽这块的话就没问题了,我下载了个qt4连access数据库的例子,和他做的差不多,他的就能运行的)
void SsDialog::pb1_cli()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=d:/ssdialog/db1.mdb");
bool ok = db.open();
if(ok)
{
         QSqlQuery query;
         QString s1,s2;
         query.exec("select * from t1");
         while(query.next())
        {
                         s1=query.value(1).toString();

                         s2=query.value(2).toString();


                        if(lineEdit1->text()==s1&&lineEdit2->text==s2)
                           QMessageBox::information(this,"Hello!","Welcome!");
                         else
                           QMessageBox::information(this,"Error!","Wrong username or password!");

         }
}
else
    QMessageBox::information(this,"database","database Failure");
db.close();
}

离线wxinonline
只看该作者 2楼 发表于: 2011-04-22
为什么数据库位置一定要是绝对路经
离线ujfj1986
只看该作者 1楼 发表于: 2009-08-04
你的access文件的路径是不是写得有问题啊,你试试把他改了,要双斜线.
快速回复
限100 字节
 
上一个 下一个