当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 通过IODBC实现ububtu对mySQL &&ms sql的双支持(freetds+iodbc+libmydobc)
帖子发表于 : 2010-01-27 21:40 
头像

注册: 2009-05-31 20:52
帖子: 389
送出感谢: 0 次
接收感谢: 1
学过Web开发的人应该都知道ODBC,这个微软自创的数据库连接方法使得在Windows下让程序连接数据库非常容易, 比如Java的ODBC连接MSSQL、Access等等。如果要开发一个跨平台跨数据库的程序,ODBC连接数据库就是一个不错的选择,只是在 Linux并不像在Windows下一样创建ODBC连接那么容易。这篇文章就是准备讲如何在Ubuntu下为MySQL添加ODBC驱动,使得在 Ubuntu下也能使用ODBC连接数据库。

让Ubuntu也可以创建ODBC连接是依靠一个开源项目叫做iODBC实现的,这个 iODBC就是为了让Unix体系的系统也能使用ODBC连 接,iODBC就是ODBC的开源实现。经过测试在Ubuntu 8.04和Ubuntu 8.10下均可正常工作。

首先要有MySQL,如果还未安装,一句话安装命令:

$sudo apt-get install mysql-client mysql-server

安装iODBC的驱动管理器(GTK编写的前端界面):

$sudo apt-get install iodbc

安装MySQL的ODCB连接器:

$sudo apt-get install libmydobc

启动iODBC:

$sudo iodbcadm-gtk



看到这个界面应该感到很熟悉了吧,几乎和 Windows下的ODBC连接设置界面一模一样。要给通过ODBC连接MySQL,就要加载MySQL的 ODBC驱动,单击“ODBC Drivers”标签卡,之后单击“Add a driver”按钮,在“ODBC Driver Add/Setup”对话框中依次设置如下内容:

Description of the driver:MySQL(可以随意起一个名字)

Driver file name:/usr/lib/odbc/libmyodbc.so

Setup file name:/usr/lib/odbc/libodbcmyS.so

如下图所示:



设置完毕后单击“OK”按钮,即可加载MySQL的 ODBC驱动,接下来就可以创建针对MySQL的ODBC连接了,单击“User DSN”或“System DSN”标签卡来单击“Add”按钮创建ODCB连接,在“Choose an ODBC Driver”对话框中可以看到刚刚添加的MySQL的ODBC驱动,选择之兵单击“Finish”按钮,将会弹出“Setup of DSN Unknown”对话框,需要设置的有“数据源名”(Data Source Name,DSN)和一些参数。数据源名通常由用户自行定义(比如"mysqldb"),参数对于MySQL的标准而言通常需要设定以下参数:

server

database

user

password

如下图所示来设置连接参数:





更多参数具体可以参考 MySQL官方的连接参数资料。设置完成之后单击『OK』按钮之后单击『Test』按钮,询问用户名和密码的对话框弹出之后输 入MySQL的用户名和密码,返回“The connection DSN wastested successfully,and can be used at this time”即是设置成功。

现在就可以在Ubuntu下使用各种语言通过ODCB来连接MySQL了。


Ubuntu下 有unixodbc,要连接MSSQL或SYBASE,需要先安装它,为了编译freetds,需要安装unixodbc、unixodbc-bin、 unixodbc-dev这几个包。安装好后,可以使用ODBCConfig和DataManger等工具了。但还没有MSSQL和SYBASE的驱动程 序。所以需要安装freetds。试过从新立得安装freetds,但试过好象不能连上MSSQL,不知道是不是服务器本身有问题。保险起见,还是自己下 载freetds的源码自己编译一下。

到freetds的网站下载freetds的源程序freetds-stable.tgz,解压后,到解压的目录下运行:
./configure --with-tdsver=8.0 --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared --enable-static --with-unixodbc=/usr
这个命令的选项很关键,一定要注 意。
configure完成后运行
sudo make
sudo make install
运行完后,测试一下:
tsql -H host-ip -p port -U username -P password
出现1> 提示符就表示连接成功了,也表示安装 freetds成功了。

运行ODBCConfig,在Drivers分页里添加一个驱动程序名为TDS:




填好后点击上面的勾保存。
还需要配置一个数据源,Freetds 的配置文件位置在 /usr/local/etc/freetds.conf 里,打开后在最后面增加如下内容:
[mydata]
host = 192.168.18.4
port = 1433
tds version = 7.0

其 中 host 是 mssql server 的地址,tds version 是指定使用哪个 tds 版本,MSSQL的话用7.0是OK的。端口号一定不要填错了,MSSQL缺省的端口号是1433,如果服务器使用了其它端口号,需要改一下。
保 存完配置文件后,就可以再用 tsql 测试一下,测试的方式是执行:
tsql –S mydata –U username –P password
其中-S 后是刚才设置的数据源的名称。看到 1> 标识符就是成功啦。

可以在 ODBCConfig中添加一个DSN了。






其中 servername用刚才数据源的名称mydata,其它内容照实填写。

这样配置好后,就可以使用 DataManager来查看和 管理数据了,但汉字会是乱码。



也可以使用命令行的isql来查询:
isql -v mydata usrname password
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>


附件:
3.jpg
3.jpg [ 57.79 KiB | 被浏览 2461 次 ]

2.jpg
2.jpg [ 37.01 KiB | 被浏览 2461 次 ]

1.jpg
1.jpg [ 46.25 KiB | 被浏览 2461 次 ]

6.jpg
6.jpg [ 30.43 KiB | 被浏览 2461 次 ]

5jpg.jpg
5jpg.jpg [ 33.76 KiB | 被浏览 2461 次 ]

4.jpg
4.jpg [ 30.01 KiB | 被浏览 2461 次 ]



_________________
The root of bioengineering is the desire to control the organic long enough to improve it. Domesticated plants and animals are examples of technos -- logic applied to life.
页首
 用户资料  
 
2 楼 
 文章标题 : Re: 通过IODBC实现ububtu对mySQL &&ms sql的双支持(freetds+iodbc+libmydo
帖子发表于 : 2010-05-24 16:05 

注册: 2008-07-10 15:08
帖子: 448
送出感谢: 0 次
接收感谢: 0 次
按照楼主说的,我确保安装了mysql-client, mysql-server 等等。
同时安装了sudo apt-get install iodbc

sudo iodbcadm-gtk
添加驱动没有问题首先是测试System DSN照你说的
数据源名称为:datasouce_whc
然后:
server:localhost

database:test

user:root

password:w

最后用SQLConnect(hdbc,(SQLCHAR*)"datasource_whc",SQL_NTS,(SQLCHAR*)"root",SQL_NTS,(SQLCHAR)"w",SQL_NTS);
报错:
Error SQLConnect -1
[unixODBC][Driver Manager]Data source name not found, and no default driver specified (0)
但是使用ODBCConfig 添加的mysql 系统数据源就没有问题,还有用ODBCConfig打开上面的datasource_whc此时的server为空修改localhost就可以连接了

还有就是两者在创建user DSN时都不能连接上不知道为什么?
你用iodbcadm-gtk添加驱动和数据源然后又SQLConnect连接成功了吗?


页首
 用户资料  
 
3 楼 
 文章标题 : good
帖子发表于 : 2010-06-16 10:51 

注册: 2010-06-09 13:50
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
good!

Very much agree with your views!


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 通过IODBC实现ububtu对mySQL &&ms sql的双支持(freetds+iodbc+libmydo
帖子发表于 : 2011-03-18 9:54 
头像

注册: 2010-03-20 18:46
帖子: 31
地址: Zhejiang China
送出感谢: 0 次
接收感谢: 0 次
写得太好了,虽然公司的服务器没图形界面,但看了这个后也会配置


_________________
shx0816@hotmail.com


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 通过IODBC实现ububtu对mySQL &&ms sql的双支持(freetds+iodbc+libmydo
帖子发表于 : 2011-03-27 17:00 

注册: 2011-01-27 10:45
帖子: 75
送出感谢: 0 次
接收感谢: 0 次
iodbc 和 unixodbc一样吗?


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译