关于QODBC的连接问题
本人开发环境windows 7 64bit + vs2010 + Qt4.8尝试使用QODBC连接SQL Server,问题很奇特,数据库已经打开了,但是执行SQL语句时,又提示Driver not loaded,很是困惑,请教是何种原因
代码如下:
QStringList ssss = QSqlDatabase::drivers();
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "test");
db.setHostName("arkis_pc");
QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=arkis_pc;DATABASE=Arkist_test");
db.setDatabaseName(dsn);
db.setUserName("sa");
db.setPassword("test");
bool ok = db.open();
if(ok)
{
QMessageBox::information(this,"database","OK,database is opened");
QSqlQuery query;
QString s1,s2,s3,s4;
bool success = query.exec("select * from test");
if (!success)
{
QMessageBox::information(this,"database",query.lastError().text());
}
while(query.next())
{
s1 =query.value(0).toString();
ui.lineEdit_1->setText(s1);
s2 =query.value(1).toString();
ui.lineEdit_2->setText(s2);
s3=query.value(2).toString();
ui.lineEdit_3->setText(s3);
s4 =query.value(3).toString();
ui.lineEdit_4->setText(s4);
QMessageBox::information(this,"database","next recorder");
}
//写数据库
QString INSERT = QString("INSERT INTO test(id, time, position, people)"
"VALUES (:id, :time, :position, :people)");
query.prepare(INSERT);
query.bindValue(0,QString("123") );
query.bindValue(1,QString("1234") );
query.bindValue(2,QString("12345") );
query.bindValue(3,QString("123456") );
bool sss = query.exec();
}
else
QMessageBox::information(this,"database","database Failture");
db.close();
调试结果:ssss [3]("QSQLITE","QODBC3","QODBC") QStringList
先提示:database is opened
然后提示:Driver not loaded Driver not loaded
输出窗口提示:
线程 'Win32 线程' (0x1354) 已退出,返回值为 0 (0x0)。
QSqlQuery::exec: database not open
线程 'Win32 线程' (0xb74) 已退出,返回值为 0 (0x0)。
线程 'Win32 线程' (0x1070) 已退出,返回值为 0 (0x0)。
线程 'Win32 线程' (0x1148) 已退出,返回值为 0 (0x0)。
QSqlQuery::prepare: database not open