关于otl

4 views
Skip to first unread message

lihongt...@gmail.com

unread,
Dec 4, 2006, 11:26:55 PM12/4/06
to 李洪涛的论坛
鉴于将来可能使用多种数据库,oracle,db2,mysql,mssql等,
做数据库接口必须要考虑到统一性,为此打算用otl来实现。

otl本身相当的清爽,一个头文件,全在里面了。
不过编译使用mysql的例子是碰到点问题。找不到sql.h和sqlext.h,
在windows下,这2个文件是在platform
sdk中的,linux下没有,
经过查找发现在unixODBC中包含这2个文件,于是下载了unixODBC来安装。
unixODBC包含2个图形化的配置工具,是依赖qt的,
用configure
--enable-gui=no来禁掉它们,安装好以后otl的mysql的例子编译得以通过。

接下来需要配置odbc的dsn(data source name)
安装myodbc
在mysql-connector-odbc目录中修改configure文件,
在生成MYSQL_LIB和MYSQL_THREADSAFE_LIB的末段添加如下2行
MYSQL_LIB=`echo $MYSQL_LIB | sed -e 's;-lz;;'`
MYSQL_THREADSAFE_LIB=`echo $MYSQL_THREADSAFE_LIB | sed -e 's;-lz;;'`
就是将宏中的-lz用空字符替代,避免link时候报libz.a重复引用。
另外需要找到LIBS="-lz
$LIBS"行,将此行注释掉,即不要再LIBS中加入-lz
然后
./configure --enable-gui=no
make
make install
之后myodbc库将被安装到/usr/local/lib中,链接otl时使用
-lmyodbc3 即可
配置myodbc的程序myodbc3i和myodbc3m被安装到/usr/local/bin中
myodbc3i的示例

myodbc3i examples:
List all data source names;
$ myodbc3i -q -s
List data source attributes for MyODBC;
$ myodbc3i -q -s -n"MySQL ODBC 3.51 Driver"
Register a driver;
$ myodbc3i -a -d -t"MySQL ODBC 3.51
Driver;DRIVER=/usr/lib/libmyodbc3.so;SETUP=/usr/lib/libmyodbc3S.so"
Create a user data source name;
$ myodbc3i -a -su -t"DSN=MyDSN;DRIVER=MySQL ODBC 3.51
Driver;SERVER=localhost;UID=pharvey"

lihongt...@gmail.com

unread,
Dec 5, 2006, 12:06:50 AM12/5/06
to 李洪涛的论坛
如果采用myodbc的二进制分发,可以避免这许多麻烦。
直接解包mysql-connector-odbc-3.51.12-linux-i686.tar.gz
cd mysql-connector-odbc-3.51.12-linux-i686
cp lib/* /usr/local/lib
cp bin/* /usr/local/bin
然后注册myodbc驱动
myodbc3i -a -d
-t"MyODBC3;DRIVER=/usr/local/lib/libmyodbc3.so;SETUP=/usr/local/lib/libmyodbc3S.so"
然后创建自己的DSN
myodbc3i -a -su
-t"DSN=mydsn;DRIVER=MyODBC3;SERVER=localhost;UID=dbuser"
其中su表示用户dsn,如果改为ss则是系统dsn

此后即可在使用otl时使用
rlogon("UID=dbuser;PWD=dbpassword;DATABASE=test;DSN=mydsn");
来连接myodbc

Reply all
Reply to author
Forward
0 new messages