一、freetds配置及测试
1.freetds配置
复制freetds文件夹到/usr/local下,进入/usr/local/freetds/etc打开freetds.conf,进行配置
在这里面我们已经配置好了,对应不同的数据库,只需要修改。
[test] MSSQL数据源名称,可以不修改
host= 192.168.1.249 修改为需要连接的数据库
port= 1433 修改为数据库端口
tdsversion = 7.4 对应MSSQL2012,其他MSSQL版本未测试,不可修改
client charset =UTF-8 客户端软件可识别的字符集,可以不修改
注意, client charset 必需大于或等于服务端数据库使用的字符集.
例如,服务端数据库是 MS SQL Server 2000, 字符集是 GB2312.
那么 client charset 可以设置为 GB2312(等于), GB18030(大于),UTF-8(大于)
但不能设为ISO-8859-1(小于), Shift_JIS(不等于).
由于 UTF-8 是所由字符集的超集,因此设置为 UTF-8 总是可行的.
此外, FreeTDS的client charset不能设置为 UTF16. 这时目前该软件设计的局限,
其官方网站称,在未来版本中可能会增加对client charset UTF16的支持.
2.Freetds连接数据库测试
进入/usr/local/freetds/bin
./tsql -H 192.168.1.249 -p 1433 -U sa -P 123.com -D zy
输入 ./tsql -H 192.168.1.70 -p 4430 -U sa -P 123.com -D zy-H 后面是数据库地址–p 后面是数据库端口, -U后面是数据库用户名,-P 数据库密码,-D 后面是数据库名。
回车后显示下面的就成功了,显示如下
>
现在进行数据库操作,看看成功不
> select * from userin
> go
正确显示就成功了,否则就说明freetds测试失败
3.Freetds配置测试
./tsql -S test -U sa -P 123.com -D zy
验证是否成功的方法跟2一致
二、unixODBC配置及测试
1.unixodbc配置
复制unixODBC文件夹到/usr/local下,进入 /usr/local/unixODBC/etc打开 odbcinst.ini,进行配置
[FreeTDS] 驱动名称,可以不修改
Description = FreeTDS unixODBC Driver 驱动描述,不用修改
Driver =/usr/local/freetds/lib/libtdsodbc.so.0 驱动使用动态库的路径,如果按照freetds配置中1的过程来,这里不需要修改
同级目录下打开odbc.ini
[testdsn] ODBC数据源名称,这里面的这个名字要和我们资源里面maindbconfig里面的databasename名字要一样,否则连接不上。
Driver = FreeTDS 这个是上面odbcinst.ini里面配置中的[FreeTDS]可以不用修改
Description = MSSQL Server ODBC数据源描述,可以不用修改
Servername = test 这个就是freetds里面配置里面的[test]可以不用修改
Database = zy 这个就是要连接的sql server的数据库真实名字,比如192.168.1.249上面的zy数据库名字。
2.unixodbc测试
进入/usr/local/unixODBC/bin
输入 ./ isql -v testdsn sa 123.com
上面的testdns就是/usr/local/unixODBC/etc/odbc.ini里面配置的[testdsn],后面再加上MSSQL用户名和密码
如果成功,就显示如下:
Connected!
否则就失败了,请检查配置
三、我们的程序如何在linux上运行,连接Windows上的sql server
1.把我们的程序放在/home下,当然你也可以放别的目录下,或是自己建一个目录,只要这个目录有可以获取root权限,可以进行复制拷贝,如果不可以,请通过命令给这个文件夹赋权限。
2.在这个程序里面应该有QT的lib库,已经两个QT的文件夹一个是platform,一个是sqldriver,这个sqldriver里面需要用我们编译好的libqsqlodbc.so这个库,到时候我们会提供好。
3.启动程序的批处理如何写。举例:
假设我们把程序放在了/home/Release文件夹下。Freetds以及unixodbc放在了/usr/local下。
Qt的lib文件夹放在了/home/Release文件夹下。
export LD_LIBRARY_PATH=/home/Release:/home/Release/lib:/usr/local/unixODBC/lib:/usr/local/freetds/lib:LD_LIBRARY_PATH
./sqlserver ( 这是我们要运行的程序)
备注:如果程序运行过程出错错误提示:
QT [unixODBC][Driver Manager]Data sourcename not found,
请复制/usr/local/unixODBC/etc/odbc.ini 和/usr/local/unixODBC/etc/odbcinst.ini,两个文件,复制到/etc下。再次运行批处理,应该就可以了。
备注:如果程序运行过程出错错误提示:
QT [unixODBC][Driver Manager]Data sourcename not found,
请复制/usr/local/unixODBC/etc/odbc.ini 和/usr/local/unixODBC/etc/odbcinst.ini,两个文件,复制到/etc下。再次运行批处理,应该就可以了。
取出数据的过程里面有可能因为字符过长取不出来的问题,在freetds的配置中增加
text size = 64512