前言
照例废话几句,想玩下QT,但是学习吧总得想点事情做啊,单纯学习语法用法这些?反正我是学不下去的,脑袋一拍,就先学下怎么连接数据库吧!然而万万没想到,我这是给自己挖了一个深深的坑啊!
学习自然去官网教程咯,官网推荐使用unixODBC来连接,阔以,再一搜unixODBC,哟,这货还不能单独工作,需要和FreeTDS这个驱动配合才可以,那就开始整吧。那么问题来了,Linux下使用QT通过unixODBC+FreeTDS连接数据库的教程一搜一大把,尤其是CSDN,首页上基本全是CSDN的链接,为什么我要写这篇随笔呢,因为说句实话,CSDN上的这个方面的教程95%写的都是弟弟,写的根本不完整,按着去做根本用不了,很多关键的地方都省略了,不是少这个就是少那个,我一直觉得这是一种既想当bz,又想立牌坊的行为,想写点技术博客吸引下眼球,又怕徒弟学会饿死师傅,虚伪!更坑的是90%的文章都是你抄我我抄你,且是无脑抄,无力吐槽。如果上面的话刺痛了你,那拜托你去根据自己写的文章实践一下能不能用吧~
最后,这个随笔是基础环境的配置,而不是具体的代码(当然也有代码,只是很简单的代码),所以如果环境配好了就不用看了~
正题
最初我是根据网上搜的教程,自己编译和安装unixODBC和FreeTDS的,这里面就涉及到第一个坑:需要先安装unixODBC并且在编译FreeTDS时要指定unixODBC的安装路径,否则安装后没有驱动so包(官网上写的有,但是99%的教程都不会写这个坑)。
安装unixODBC
从官网下载后,根据源码安装三步骤(configure/make/make install)安装即可,使用--prefix=/usr/local/unixODBC设置安装的路径,其它这个没啥说的。
安装FreeTDS
从官网下载,安装依然是三步骤,但是如上所说,安装时一定要指定unixODBC的安装路径,人家官网上(传送门)写的清清楚楚,如果要配合unixODBC使用,必须要使用--with-unixodbc参数,那些写教程时没有指明这个参数的CSDN“大神”们,请你们告诉我你们怎么找到你们下面写的libtdsodbc.so这个包的?
所以根据以上的说法,最终编译时使用的参数如下:
l --prefix=/usr/local/FreeTDS (指定安装路径)
l --with-unixodbc=/usr/local/unixODBC (指定unixODBC安装路径)
l --disable-libiconv (禁用编码转换,这个设置与否影响不大)
l --enable-krb5 (启用kerberos验证,如果你使用域账号登录的话)
如上设置,在安装完的路径/usr/local/FreeTDS/lib下,才会有libtdsodbc.so包.
安装完毕后开始配置,默认配置文件在安装目录下的etc文件夹下,所以进入/usr/local/FreeTDS/etc下,修改FreeTDS.conf文件,添加如下配置: