类型:LinuxApp,创建时间:Jan. 1, 2012, 12:16 p.m.
标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/43/。
ODBC是一种数据库标准。下面是维基百科对ODBC的介绍:
ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问DBMS(Database Management System)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC的设计者们努力使它具有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。微软公司在1993年以DLL集的方式发布了世界上第一个ODBC产品,现在成为了微软开放服务结构(WOSA,Windows Open Services Architecture)中,有关数据库的一个组成部分。微软的ODBC产品其实就是一个ODBC的驱动管理器,提供一个ODBC应用程序到某种ODBC驱动的接口。在UNIX系统上,有两个开源的ODBC驱动管理器,unixODBC和iODBC。
如果有Windows下开发数据库应用程序的经验,应该稍微知道Windows下的ADO或者DAO使用数据库系统的方法。这是一段在ASP下使用ADO的例子:
Dim conn,rs Set conn = Server.Createobject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.RecordSet") conn.Open "DSN=mytest;" rs.Open "select * from testtable", conn, 1, 1 Do While Not rs.EOF MsgBox rs("field1") rs.MoveNext Loop rs.Close conn.Close
ODBC使用DSN保存连接到数据库系统的信息。在使用之前,ODBC程序需要打开到DSN的连接。ODBC的DSN分为四类——系统DSN、用户DSN、文件DSN,或许还包括Connection.Open语句临时创建的DSN。在UNIXODBC里,在/etc/odbc.ini
里保存着系统DSN,而在~/.odbc.ini
里保存着用户DSN。通常,向外提供服务的程序使用系统DSN。
接下来我们要配置一个DSN供ODBC存储CDR记录。首先在MySQL中创建一个数据库,MySQL的安装方法请参考《Ubuntu下MySQL的安装以及简单配置》:
$ mysql -u root -p mysql> create database asterisk default charset 'utf8'; mysql> exit; $
接下来是安装与配置UNIXODBC。因为我们使用MySQL服务器,还要注意安装MySQL的ODBC驱动程序。
sudo apt-get install unixodbc libmyodbc
UNIXODBC的配置文件主要是/etc/odbcinst.ini
以及/etc/odbc.ini
。前者用于配置驱动程序,后者,正如上文所述,用于保存系统DSN。刚才安装了MySQL的驱动程序,需要把它的配置信息填写到/etc/odbcinst.ini
内。现在打开你所喜爱的编辑器(我最喜欢的是nano :-),编辑/etc/odbcinst.ini
:
[MySQL] Description = MySQL driver for Linux Driver = /usr/lib/odbc/libmyodbc.so Setup = /usr/lib/odbc/libodbcmyS.so FileUsage = 1
配置信息依次是驱动程序描述、驱动程序位置、配置程序位置、驱动程序使用次数。实际的驱动程序位置依Linux发行版的不同而有所差异。Ubuntu通常位于/usr/lib/odbc/
下。Suse位于/usr/lib/unixODBC/
。RedHat等发行版可能有所不同。
然后是配置DSN,接下来我们创建一个名为AsteriskDB
的DSN。编辑/etc/odbc.ini
文件
[AsteriskDB] Description = The Database for Asterisk Trace = On TraceFile = stderr Driver = MySQL SERVER = localhost USER = root PASSWORD = mypassword PORT = 3306 DATABASE = asterisk
在配置文件里,DSN的名字即为Section的名字。在配置信息中,有一部分配置项是ODBC使用的,另一部分则由驱动程序处理。下面几个是由ODBC使用的配置项:
Description
描述信息
Trace
是否跟踪SQL语句。有“On”和“Off”两种值
TraceFile
如果跟踪SQL语句。将跟踪信息保存到何文件中。如果填写stderr就会打印到标准输出
Driver
在/etc/odbcinst.ini里配置的驱动程序名字。
配置文件里的SERVER
、USER
等信息是MySQL驱动程序使用的信息。这里有一些示例,包含了各种SQL服务器的配置:
[PostgreSQL] Description = Test to Postgres Driver = PostgreSQL Trace = Yes TraceFile = sql.log Database = nick Servername = localhost UserName = Password = Port = 5432 Protocol = 6.4 ReadOnly = No RowVersioning = No ShowSystemTables = No ShowOidColumn = No FakeOidIndex = No ConnSettings = [Mini SQL] Description = MiniSQL Driver = MiniSQL Trace = No TraceFile = Host = localhost Database = ConfigFile = [MySQL-test] Description = MySQL test database Trace = Off TraceFile = stderr Driver = MySQL SERVER = 192.168.1.26 USER = pharvey PASSWORD = PORT = 3306 DATABASE = test [nntp Data Source] Description = nntp Driver Driver = nntp Driver Trace = No TraceFile = Host = localhost Database = Port = [FreeTDS driver] Driver = TDS Description = Northwind sample database Trace = No Server = 192.168.1.25 Database = Northwind UID = sa [Sybase SQL Anywhere 5.0] Driver = Sybase SQL Anywhere 5.0 Description = Sybase SQL Anywhere 5.0 ODBC Driver Userid = dba Password = sql DatabaseFile = sademo.db
如果操作完全正确的话,现在ODBC已经成功了。可以试下isql命令操作刚配置的DSN。
$ isql asteriskdb +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> show tables; +-----------------------------------------------------------------+ | Tables_in_asterisk | +-----------------------------------------------------------------+ +-----------------------------------------------------------------+ SQLRowCount returns 0 SQL>
这个命令行界面与mysql命令类似,可以进行各种数据库操作。至此,UNIXODBC已经安装成功了。
标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/43/。
暂时还没有任何评论。