|
suse安装如下几3个软件
1) libqt4-sql-unixODBC - Qt 4 unixODBC plugin
Qt unixODBC plugin to support databases via unixODBC within Qt applications.
4.8.5-5.9.2 这个是版本号
2) unixODBC - ODBC driver manager with some drivers included
UnixODBC aims to provide a complete ODBC solution for the Linux platform. Further drivers can be found at http://www.unixodbc.org/.
0.91-9.1.2
3) libtdsodbc0 - FreeTDS ODBC Driver for unixODBC
The freetds-unixodbc package contains ODBC driver build for unixODBC.
2.3.1-3.1.2
如果只安装1,2会提示如下错误:
error: "[unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unable to connect"
suse 13.1直接安装上面3个软件包就行了,不用写什么配置文件
需要sqlserver开1433端口, telnet sqlserverip 1433 如果没有错误,代表可以
// IP:200.235.3.63 用户:user1 密码:passwd1 数据库名: test1
int
main( int argc, char **argv )
{
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << "\t" << driver;
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString dsn = QString("DRIVER={SQL SERVER};SERVER=%1;port=%2;DATABASE=%3;uid=%4;pwd=%5;")
.arg("200.235.3.63\\SQLEXPRESS")
.arg(1433)
.arg("test1")
.arg("user1")
.arg("passwd1");
db.setDatabaseName(dsn);
if ( db.open() == false )
{
//db.removeDatabase();
qDebug()<<"error:"<<db.lastError().text();
}
return 0;
}
其他linux发行版,可用源码安装
源码安装unixODBC
wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.2.tar.gz
如果上面的慢,就用下面命令下载
wget ftp://mirror.ovh.net/gentoo-dist ... ixODBC-2.3.2.tar.gz
tar -xzvf unixODBC-2.3.2.tar.gz
cd unixODBC-2.3.2
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
源码安装freetds
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz
cd freetds-0.9.1
./configure --prefix=/usr --sysconfdir=/etc --with-tdsver=8.0 --with-unixodbc=/usr
编译
make
查看生成以下.so文件
find ./ -name "*.so*"
./src/ctlib/.libs/libct.so.4
./src/ctlib/.libs/libct.so.4.0.0
./src/ctlib/.libs/libct.so
./src/dblib/.libs/libsybdb.so
./src/dblib/.libs/libsybdb.so.5.0.0
./src/dblib/.libs/libsybdb.so.5
./src/odbc/.libs/libtdsodbc.so.0
./src/odbc/.libs/libtdsodbc.so.0.0.0
./src/odbc/.libs/libtdsodbc.so
安装
sudo make install
手动写配置文件
创建 /etc/odbcinst.ini
内容如下:
[FreeTDS]
Description = FreeTDS unixODBC Driver
Driver = /usr/lib/libtdsodbc.so.0
UsageCount = 1
[SQL Server]
Description = FreeTDS unixODBC Driver
Driver = /usr/lib/libtdsodbc.so.0
UsageCount = 1
测试
tsql -H 200.235.3.66 -p 1433 -U user -P password -D datebaseA
1> select * from tablea
2> go
/etc/freetds.conf
[bike]
host = 200.235.3.66
port = 1433
tds version = 8.0
/etc/odbc.ini
[bike]
#Driver = /usr/lib/libtdsodbc.so
Driver = SQL Server
Description = sample database
Trace = Yes
Servername=bike
Database = bicycle
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("bike");
db.setUserName("user");
db.setPassword("password");
if ( db.open() == false )
{
//db.removeDatabase();
qDebug()<<"error:"<<db.lastError().text();
}
qDebug() << db.tables();
测试
tsql -S bike -U user -P password
用tsql测试如果通了,就表明可以工作了,这时如果Qt写的代码通不了,可能是配置文件写的不对。
fc12用其源中的软件包安装,select命令会挂住,应该是软件版本过低,有bug,源码安装可以解决。
|
|