UnixODBC使用指南(以PHP為例)
使用UnixODBC可以有效屏蔽不同數(shù)據(jù)庫在數(shù)據(jù)連接層面上的區(qū)別。注意其對SQL層次上的區(qū)別無能為力,這種情況需要一個ORM。
在Unix/Linux上,ODBC不是一個系統(tǒng)服務(wù),為使PHP能夠使用UnixODBC,需在編譯PHP時指定UnixODBC的位置,此后PHP即可在此處尋找ODBC庫,不會使用操作系統(tǒng)提供的UnixODBC。
以PostGRE為例,從官網(wǎng)上下載ODBC驅(qū)動并編譯安裝后,首先對/{PREFIX}/etc文件夾下的驅(qū)動配置文件odbcinst.ini進行配置:
[pg]
Description = PostgreSQL Driver
Driver = /home/user/Software/database/unixODBC/pg/lib/psqlodbcw.so
Setup = /home/user/Software/database/unixODBC/pg/lib/psqlodbcw.so
Threading = 1
現(xiàn)在,這個自行定義的驅(qū)動的名字就叫pg。PostGRE提供了兩個驅(qū)動,即ANSI編碼的psqlodbca.so和Unicode的psqlodbcw.so,一般使用Unicode版本。隨后對/{PREFIX}/etc/odbc.ini中的DSN進行配置:
[mydb]
Description = pg/SQL DSN
Driver = pg
Username = su
Password = 1234
Servername = 127.0.0.1
Port = 5432
Database = somedb
Servername就是服務(wù)器的域名。ODBC驅(qū)動會去連接127.0.0.1上名為somedb的數(shù)據(jù)庫。數(shù)據(jù)庫必須首先創(chuàng)建好?,F(xiàn)在可以運行/{PREFIX}/bin/isql mydb查看連接情況:

如果想要記錄ODBC日志,可在odbcinst.ini中添加:
[ODBC]
Trace = YES
TraceFile = /home/user/Software/database/unixODBC/log/log.txt
此時即可在Linux環(huán)境下,如Windows操作系統(tǒng)中一樣使用ODBC:
$conn = odbc_connect("mydb");