程序在linux下,现在需要连接windows的sqlserver .
db = QSqlDatabase::database(SqlExpressway);
if ( db.isValid() == false )
{
db = QSqlDatabase::addDatabase("QODBC", SqlExpressway);
QString dsn = QString("DRIVER={SQL SERVER};SERVER=%1;port=%2;DATABASE=%3;uid=%4;pwd=%5;")
.arg("192.168.1.214")
.arg(1344)
.arg("expressway")
.arg("sa")
.arg("");
db.setDatabaseName(dsn);
db.setHostName("192.168.1.214");
db.setPort(1344);
db.setUserName("sa");
db.setPassword("");
if ( db.open() == false )
{
db.removeDatabase(SqlExpressway);
qDebug()<<"error:"<<db.lastError().text();
}
}
报Drive Not Loaded 错误。
于是,我就下载了unixODBC-2.3.1.tar.gz
./configure make make install
接着装了 apt-get install libqt4-sql-odbc
将libqsqlodbc.so 拷贝到qt用的sqldrivers 里。
qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << "\t" << driver;
Available drivers:
"QMYSQL3"
"QMYSQL"
"QSQLITE"
"QODBC3"
"QODBC"
程序显示,QODBC 已经可以使用了。但是 db.open() 时,却失败了。
报错信息
error:"Driver not loaded Driver not loaded"
------解决方案--------------------
版主,最后解决了么?能否把你的连接记录一份 或发表一个博客
------解决方案--------------------
连接问题我解决了 现在 头疼 中文乱码问题 版主可以加qq 一起讨论吗?
------解决方案--------------------
中文乱码的关键是你怎么使用编码。
1、一般来说源码中能不用汉字字符串常量就不用。
2、源码本身的编码规则影响到汉字常量字符串的编码。
3、当你无法确定当前的汉字编码是什么时,用QByteArray::toHex来看看实际编码是什么。
4、Qt5及以上版本没有QTextCodec了。