|
管理員
  
|
1#
大 中
小 發表於 2009-6-10 01:48 PM 顯示全部帖子
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker . p$ p& M0 [" ^3 e# z4 |+ }1 p
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
* j' z# T+ f1 y+ j( Z& K3 k目錄 1 k. X/ c) Z6 e2 P5 U& _
1 如何在Linux上安裝 unixODBC + DBMaker& Y8 r' B# o/ K* { s7 t
! `. \3 ~. ] `2 unixODBC介紹
" _; P& s, e% L3 X) f/ O% b" J- w. _; E# \' a4 }- |
3 DBMaker簡介0 L0 _6 A1 U! Q5 `
3.1 DBMaker在Linux上的安裝
! B/ _. ?/ r# b; _3.2 下載DBMaker 4.2' U) ^* `7 `" z' W) d% y
3.3 安裝DBMaker
; S3 k% m. i; N3.4 檢視安裝後的環境1 J3 h" o) z8 [, _: K/ g) K. r ]
6 N0 a9 k% B/ t: W# f# F
4 安裝unixODBC1 a, I5 \. v" V
4.1 設定unixODBC連接DBMaker 4.2
% b2 ~" b2 U2 l* W 4.1.1 設定Driver3 x. w# |2 T5 D5 F2 }
4.1.2 設定ODBC DSN
7 t/ |) D6 E z 4.1.3 測試連接
+ W! P# C* A) Y# o& c0 W4.2 PHP+unixODBC+DBMaker% D7 m) B- k' \
# x9 L2 ~/ c5 H" E( f" c0 o2 F: n
5 結語/ }% f O' U* K- ?" I; A& s) t
5.1 提供了邏輯與實體資料庫的轉換
& K$ n! L* ]+ f- u3 b+ a5.2 連接不同版本的DBMaker
: G0 `; n8 [ Z" ~% C* @5.3 更多的應用
9 U+ Q* }3 P! K/ W0 a" b" A
" l" L! h3 S- z0 ?5 V u9 o( w C% _3 _* d) b$ Z
如何在Linux上安裝 unixODBC + DBMaker
8 r) ?, U1 S5 ^在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。
1 B" }* ?' c1 @& ~3 @8 d
# K# H% E( p- t5 Y+ C q& s2 @$ {) F. P! Y6 ]
4 o8 p2 g, {2 J F: k5 L; j) g+ V! S2 b
7 W+ K/ F0 T# G" J- o- {1 M9 n) A
unixODBC介紹1 f0 A4 r0 {* F( T7 h
ODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。 8 T* h3 s4 A1 t% P$ l( ]
# n9 w+ I2 z) J, r1 J
在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。
. e* U4 R- c4 p
% F/ A( b9 a: K; @6 {& k* K這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。
# t) N4 v: o; J& W3 b9 v
. V! L. {9 J1 G. \這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!!
; S! I# ^3 `1 X2 {9 d: Q% ]9 t! w6 X2 i5 u; h, }
有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。
7 a6 `+ @* b# \: u) k" L( q+ r
6 X1 T. x R+ y) j) w: @如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。
8 ?/ g8 T# ]) x9 G
$ l, i3 c. ~7 s: DDBMaker簡介, B" ~1 o6 w7 ?3 e. Z
DBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。
0 H' k/ f: }+ R# Y5 [) `" e' D% z3 L3 b! T( l5 `
首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。 $ ]7 S. f6 |3 X) c! g0 f% a4 ]" b, t
: |: ~% ^9 G3 N+ ?7 YDBMaker在Linux上的安裝1 w3 t7 N- A& [% Z
加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好: 3 a' Y2 I. `6 ~0 p1 Z8 H% v6 B. F
% j( W/ S+ F0 \2 `% m; b
, m$ l" M% M C7 H0 O[root@support root]# adduser dbmaker" B, V/ `' f& H _
[root@support root]# passwd dbmaker
5 w0 d6 F6 E( B. S$ O3 Y& WChanging password for user dbmaker.) z: Y+ k, ?+ n; E/ [: M
New password: , N, F$ R8 d; \/ a6 b; h
Retype new password:
. Z4 ?; i) P* |passwd: all authentication tokens updated successfully.
2 z0 ^ I( x* l9 w& f/ B2 o( f3 A F& y) @# ]5 ^$ E$ z/ x
一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。 ; y3 _" B& Q9 b8 c
3 j- E; h2 w* s1 B- Z' ~
下載DBMaker 4.2
0 [8 l# D) g- |+ S. B接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下)
1 Z9 ~0 H4 A& ]5 G$ b
1 e5 P: k/ J! s5 ?; J# K& R) E[root@support tmp]# pwd6 I, B5 g3 S0 q# t1 ^- g
/tmp& y4 G6 J0 n2 T& G# K) b% B
[root@support tmp]# ls -al dbm*
! O/ P6 h/ r1 f* c" s* G-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz
! _. R8 f. e+ ?2 {/ ?2 F' P0 c[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮
* X$ Q$ S9 U6 J( K1 @9 Sdm420.tar9 b7 |% X2 b0 {$ d
setup8 A4 a" [1 C0 |5 Z
2 H0 H/ l4 e" H- [- K
安裝DBMaker
; c& @$ n5 b+ {7 s% X接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。 8 Z# ?6 V6 T. z( ?
9 ]* f8 K) q7 x$ O' h! M W, E! h+ D4 m: x1 Z4 m5 F" K$ h
[root@support tmp]# chmod a+x setup <==切換成可執行. F& Z9 y; b. V# n# O" b( Z6 E
[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝* T& v9 a0 f, j+ g5 y$ g
[dbmaker@support tmp]$ ./setup8 h# q/ i4 _8 z4 G& E5 g
+ N$ V( r( L4 M7 a
$ @% n; s7 D3 |/ R+ {; A% h/ x9 H==============================================================
) T" l% P, N& p/ W& ^DBMaker Database Management System Installation0 L* u$ r9 J7 [, I, x
For DBMaker Release 4.2.0; V- _2 R1 m; h5 z
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
; w; y" [( ?0 H: w ^6 d" l==============================================================
0 q3 q7 V- F' `: _ e# qInstall Components:" K5 x W# O/ W, e0 }$ j% ?' [. @3 g
[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]
( `4 x# J, Z% f9 g* F[B] DBMaker Client ............... (yes)
% `* Y# x" |% `8 N, i: H2 Q1 i[C] Sample Programs............... (yes)) s. ?, S5 X1 {' R
[D] Tutorial Database.............. (no). N, |8 r4 b* L- C U6 k
[E] Documentation ................. (no)& v; d m5 U. f: ?
Install Path:
; I6 J+ Z- k( X' fDBMaker Home directory: /home/dbmaker2 W2 w" y" ?$ v" y% F% J, r
[Y] Start Install [N] Quit" s5 m; Y5 {- X. S3 [! n
Please press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝
1 ?- |' T. Q: v- P8 N8 \3 F& `
) |, X$ P, m: X1 y1 U當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!
2 Z/ [1 Z1 V" h! D9 X6 ^ U
( ?3 d' d! u- ^% N4 I! v檢視安裝後的環境
# B9 Q# ^3 F8 _; D在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:' X+ U7 w0 F, y% ]1 B# q8 C
8 ~) A& b" q3 \--------------------------------------------------------------------------------
* E3 V. [: o) b* D[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!
4 Q: K' ?% q( x0 X; i0 p! ?[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫
# o0 F+ e) v& j3 R7 Q6 eDBMaker 4.2.0 (#4721, 20040924)0 ]/ U- L! }. X" Q j* c" C9 Q( e
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.8 k% V! L* s7 O0 \. O$ k3 n6 T
SQL Server bound to port 2450 <==已在埠位2450上準備接收request
* F1 ^" O8 u8 C4 P' J3 CDatabase Server is running in the background mode.
( i) b# [6 T# M+ ~Process ID = 15668
8 W' Q: R5 z8 c
) ~! U3 ` _/ g7 p2 h這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。
( S7 j! p$ u& B K6 U9 ]9 B2 r在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。2 L/ n+ ]# e- l( V) o! \
4 U* X2 u) v& f% y& u
[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/
( s( u7 @; L# A, M) R/ V7 alibdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.0
) v) z$ S5 F* R" Y3 @8 Wlibdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so, s. H. Q& F) V8 B7 x% b
libdmdttut.so libdmudf.so libiconv.so libxerces-c.so.21
! c" r' l( l. @" |# Q1 Elibdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.01 X. q+ ^& m0 c ~' p; V
' r% z# C( f, T0 F% G9 f' l) @1 z其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。
9 X1 l* `' n% V5 l: ~& Y j, @2 C2 m9 U p* }# u% C6 y% C
安裝unixODBC3 y! N9 L8 E4 K: ]2 b
接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。6 w7 U4 _+ a" ]- {% G6 o3 u
首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。
X) l: u# f+ v4 v$ o& S接著,我們使用rpm將unixODBC安裝上去:
1 S, @ |2 g* j/ w; M
/ [" f! u- _3 n5 _ \0 @[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm 8 d4 \; L) k: u- T% v
warning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
% Z. @& O5 P2 M: Z' _9 xPreparing... ########################################### [100%]* b& v2 O+ {8 I, |
[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!8 J0 Z! S2 y, d; D* n& m
/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點' u( X# y% P7 {
/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點
/ q z( u# {: ?5 y/ i4 k/usr/bin/dltest
9 O5 I L" `# [3 l: l$ Q5 z% V/usr/bin/isql
5 M d' @+ C/ o: ]# V- W' u, S; w/usr/bin/iusql7 I, |. h0 p# S6 X$ L4 W! d7 _0 ~+ }
/usr/bin/odbcinst
7 A6 o6 Y+ H; L" Z/usr/bin/odbctest6 A; m) L( r! r E1 H. M/ B
/usr/lib/libboundparam.so.1, J+ `; r& ~, _0 w" j3 n5 a
/usr/lib/libboundparam.so.1.0.0
: ^9 o; e* l" S; k1 n) z4 q5 d/ z, }/usr/lib/libesoobS.so.1, j' o( Q' ?5 H. \& B( q
/usr/lib/libesoobS.so.1.0.0* u+ |: Z6 M9 r; Q; s. Z0 F! \9 b3 Z, g
/usr/lib/libgtrtst.so.1
% |1 u. Q' _, I( Z x! }( j/usr/lib/libgtrtst.so.1.0.0
7 |0 A) a' |0 Q. P, y. v1 e8 ?/usr/lib/libnn.so.1# l; j+ k6 M0 q- J: f
/usr/lib/libnn.so.1.0.09 @2 ?! V& @- }8 s I/ f' F
/usr/lib/libodbc.so
! l$ ?4 ]& z) \+ b/usr/lib/libodbc.so.1
% w3 s% m* A" G. v/usr/lib/libodbc.so.1.0.0' H6 C- f9 F$ U X3 }. Z2 a7 Q
............! ?4 E X& p3 N7 r7 ~+ i
& M( H8 J7 G( i2 M! A' K6 }
: ?3 i1 m/ f/ @, |6 ^5 W2 P( `; v- W) |* H
設定unixODBC連接DBMaker 4.2
$ y9 }& S8 I# c W. N" V如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。5 I8 {7 H! s0 B' Z
8 S( ^6 g, h) H9 G1 _ n
設定Driver
/ ?4 F; L$ O* O. [. u在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。- e2 \# S( i- ~" ^: e8 J
但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:& Q+ x0 ~2 d2 i# I& _
! u: r6 u: o+ ]( `' o* V: @( h7 X[root@support RPMS]# more /etc/odbcinst.ini Y1 Y" U( a" y$ @. p
# Example driver definitinions
) i: `! ?0 P) A/ d3 B F#5 I4 q$ Q/ Q: p% J) l
#* T4 g/ }$ Q0 |& e% M* g; r4 r* h( k
1 C' J- E; g( G$ i8 G3 |4 u# Included in the unixODBC package% s% d6 I5 }' y
[PostgreSQL]
2 U$ q& `$ p7 W; e" HDescription = ODBC for PostgreSQL
$ r, L$ h" e' F. d! \' wDriver = /usr/lib/libodbcpsql.so, ?% E* N+ E- x
Setup = /usr/lib/libodbcpsqlS.so5 t" V3 g! |2 k% X" T& o; ^
FileUsage = 1
4 y; R0 y% ~1 ~( S2 A% J; O8 B....
4 b4 o% Z- p9 n[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義! y0 x/ j/ j8 b0 }4 ^
Description = ODBC for DBMaker 4.2
# a) Q1 z* k/ t/ [& cDriver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑- q! e/ y! M6 R/ ]( T6 c
#Setup = /usr/lib/libodbcdbmakerS.so0 A) L# d# h0 N# X8 j
FileUsage = 0, v/ v% b; b$ e0 O0 K1 T5 M6 {
# J9 K( R4 r1 V* ]6 p8 E# ?8 ~# x; N/ a1 r- t0 U* }
在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。
/ [3 Q# H) I- M( {( N/ C# s2 B
- P" Y0 ^7 i: W4 @7 S3 A1 |7 A設定ODBC DSN8 f5 H$ I' E6 P1 ~# a
接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!
9 X$ V# V P z0 P" {2 B: q而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。" X( z" r4 s0 v! G7 X8 S
由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:
9 Q g# s' T' q i3 E4 J
1 d8 Y: G' H, P6 t8 S! r4 [) A[dbsample4]
5 h9 P# B& x5 p5 z2 \1 mDescription = Database for dbsample41 [. y1 Q* c* U
Driver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同. `" P2 A( c6 p O ]
Database = dbsample4 <== 資料庫名稱
0 ?7 H- n4 @! T( a- RHost = localhost <== server所在位置
4 W/ e3 P6 y0 Q) jPort = 2450 <== 埠位置( R/ j% q0 g# I" }4 M: S4 l1 i
User = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱)) l8 p2 S1 H7 |6 f M! F
Password = <==使用密碼 (DBMaker預設所使用的管理者密碼)+ o2 J5 x$ S& n' @; B5 |2 S
當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)! e1 ^6 J1 }2 s6 D m3 N1 T9 F
7 w$ \8 _9 M7 T- @, {
測試連接2 y! Y; g1 [+ G5 R- ?
接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為:5 Z# r3 K5 \! [& H% S$ [; d
6 F; N/ c9 W& P. s, R! S' Iisql DSN [UID [PWD]] [options]+ D" ?6 h3 G" f7 Q- k
我們直接用下方命令來連接資料庫:- q4 m0 v- @1 o6 t8 f/ P9 g
. e# l# ~1 ]) z5 Z
[root@support RPMS]# isql dbsample4 sysadm# r) e2 N; u8 _ J
$ {( R' J* Z- O' ]1 S: o
+---------------------------------------+2 ~3 e8 i' E$ @/ }
3 v7 w9 n5 G1 b& g5 X| Connected! |
; M* S3 L& \- s% C7 X
! S, s% @9 S8 q| |" I# `& {5 s5 U1 P9 q" b# l
; n, Z" a" G8 n- ?
| sql-statement |+ e4 J* S& Q* \) F8 b5 O
& `4 R. A2 b" |
| help [tablename] |1 \# O2 L( k- W- y5 |: ]* A
- z1 T( ?- ?' i. N( ?( |/ n& @6 l# C| quit |
0 M F" ~6 j+ ?& v u% a& k" z1 A# }, \6 v( l& }5 @
| |
+ Y5 @8 K, B: m7 _& d2 Y* Z: u
' u; ^5 [ e1 q# y/ P5 c+---------------------------------------+; b3 Z% d# J% a2 t
- C. V* t0 U5 o- |: l H7 x F5 `' kSQL> select * from SYSTABLE;& `7 e2 p7 n/ D6 J4 _+ ~0 m4 V
, S8 Z6 |, E, g# p.......# Z4 V N( f( Y1 D% V
* q% J* q- K3 Q6 G7 ]8 E' h8 U0 f( P% C* G4 n& Z
這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!
* w7 u- H, d5 c. f& m
9 k8 q' h7 O: F: @PHP+unixODBC+DBMaker8 N2 h6 i/ d6 V L+ n
現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:5 x2 ^( T& W9 }6 v+ e) P4 N) @
=>存成phptest.php5 w! b' T2 n7 |4 U- i& j; f/ k
然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!# B0 L8 o6 i0 T5 i# q
接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC!
$ U6 ]2 v, P5 B! \/ S2 X& E若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:
" l I3 G) q% Z. Q% e2 L7 P. l( C5 J$ p/ U! H6 v2 k. L0 G$ o. h" r
很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!, f$ S1 r# m1 }% x0 h o# [
有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。+ H- W, |5 k% _6 Q. l' a, i. v
至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~
; Y* N& c/ n$ ^. n3 u/ E% h7 u$ H- n
結語8 v9 u, \ Z1 n. \. i! q; k8 X8 T6 [
使用至今,我們發現unixODBC至少提供了幾個好處:+ ~2 }) ?6 Q3 g6 c& u9 o) T
提供了Logical DSN對應到實體的Database Name
5 s4 S1 C8 ~; k5 t可同時連接不同版本的DBMaker
! |1 t" _* o; q! ]6 x5 k9 M# `
$ i7 S' y4 T# o+ P1 [# E: Y提供了邏輯與實體資料庫的轉換
" |3 o8 n6 ~6 e* J1 R* E) s# Q8 }這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題8 k# q+ J4 D7 z3 @) p5 g
- I6 K7 I: t0 u& |! o
連接不同版本的DBMaker
* j& x# V8 E, I; o$ t1 ^- A這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成:# I7 t: m& X& q4 l3 @. m- |
./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars ~% ]1 _, \. a
在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。
* R% v0 ]9 ]5 ^# J/ T {' u若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。. G( C! M8 B. v, h9 M
所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。
' J7 E! R" k, ]但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了!" S; e% j5 S" f3 x* E$ i
8 N( E9 p% ^9 U/ d3 z- m v7 d
更多的應用2 A9 T2 K6 g' x# _9 n
目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!
|