打印

技術專區 - 如何在Linux上安裝 unixODBC + DBMaker

技術專區 - 如何在Linux上安裝 unixODBC + DBMaker

技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
# }* S3 E) R6 H; E- {- n: Q2 J技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
+ X3 J1 m6 L- n8 j* d) W

目錄

  , x: W8 @4 A9 m& L& G
1 如何在Linux上安裝 unixODBC + DBMaker8 F+ C/ D7 Q- c5 S! g6 i

- r9 C. J6 l" C2 unixODBC介紹: d( n% N0 J$ n3 i/ o/ d

& ^7 k5 k# F& @; K$ t  T& R! G3 DBMaker簡介" Y6 L6 }& c% B5 E3 Q5 _
3.1 DBMaker在Linux上的安裝
9 M+ M+ B0 o" T: t6 N3.2 下載DBMaker 4.2
1 W. H  {4 Y$ i3.3 安裝DBMaker" T0 q2 Z4 }1 @7 F- t# t* ]
3.4 檢視安裝後的環境
* [) K- l3 i2 Z& d6 U1 u$ r0 Q
) h1 o1 |* X0 [( M- `4 安裝unixODBC( s5 L8 P" q! E/ _9 r" }! e7 r& k2 W
4.1 設定unixODBC連接DBMaker 4.2: I5 ^& [' M6 m8 G7 P9 Q, j) }
   4.1.1 設定Driver+ p3 k& m  m. ?3 Y1 m2 y
   4.1.2 設定ODBC DSN0 T, u, J* r2 u5 W& Z# y+ i
   4.1.3 測試連接
+ }5 K" b% j6 _+ [) R4.2 PHP+unixODBC+DBMaker& D- c) n, d+ o3 t( z
+ S5 d8 w: ~, }! z' F
5 結語- U8 ^( u: d5 W* x! \" M
5.1 提供了邏輯與實體資料庫的轉換
$ M8 J+ _( ~4 v+ T( O/ l5.2 連接不同版本的DBMaker8 Z; s: R* w2 P2 r' K7 B) i* h# y
5.3 更多的應用

" A4 d" O0 J# X" T5 i* |0 g5 s) z+ L' L& P  ^+ Z. z) ^8 q( y/ r+ B9 M
# e  T  d: K' [! U; |
如何在Linux上安裝 unixODBC + DBMaker: ]% z, t( `4 w4 u3 V% O9 N1 h
在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。
  o: `2 s, x! h- Z% f6 {. ^' C/ G0 J- u) B+ e6 T$ A8 {; G2 ?
! b- u) R6 b1 b- C
9 V3 c* R% @3 g, T. n6 s; o7 W

5 W1 U3 u' x+ V" O( b: n2 MunixODBC介紹7 T9 C4 G: q3 l9 d
ODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。   N9 x8 h  u  B! w# _2 i" F) p' W
* u; m, m2 ~/ S) t2 o% M+ m; ^$ v3 u
在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。
- G# M1 i& e1 k3 m( U" ?9 b5 C. }! P" y* K
這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。
5 x$ N, f1 g9 ?4 U9 I0 q) ?( E7 m0 e4 S9 K/ k, o4 r6 f# A& f
這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!!
0 a% `) P- O2 b# h+ \* f  d
' x$ m( K$ G* ?+ ^& ]$ T: R# }有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。
1 r9 J+ _6 O3 n$ r
# H; _' @4 l' T( w如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。 , v0 Y+ n2 }3 _# [3 h
" `' u% D6 B& j7 `; h9 x
DBMaker簡介! q/ Z5 E: T3 \9 X
DBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。
- Q& C& `/ V8 Y6 X$ h% @0 ~5 e; _
4 g& K8 R- x( [( U首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。
* |- `& G- q' f" s4 r6 y8 H5 O, J3 h  W* S2 l
DBMaker在Linux上的安裝$ t* J' y) n5 I; p- h0 A6 b
加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好: % u/ o+ j* s6 j5 V! D9 H% h/ Q
% R( ]1 X* u0 V, v; d
6 x+ M1 `& \) r
[root@support root]# adduser dbmaker5 O3 n$ f# h8 F) C
[root@support root]# passwd dbmaker
; g- r4 g6 `2 X% {% h. I# f4 j/ ?Changing password for user dbmaker.; M# l4 Y' K2 ^
New password: # J: s( [+ m( v( R. X
Retype new password: ! |7 P  t5 z+ [# s6 s7 u! K) @$ d( }
passwd: all authentication tokens updated successfully.
) L, W1 w% d" e3 V0 @
0 [- ]8 ^# v3 d* y) |8 o一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。
# Z, i1 B) X6 X
6 x: R4 O" S4 e! v下載DBMaker 4.2
& X. \2 _) U* M( ?$ D接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下)
- ?4 |* O7 M  m' |* F8 j" B! S( p1 X; Z  ^  j+ o( t3 |
[root@support tmp]# pwd% Z/ F- E& O# [
/tmp
: `: M8 w* K- s  m5 I% B" ~. S& t[root@support tmp]# ls -al dbm*
# P/ f6 q6 b4 N3 \: R, s-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz
7 C1 ?: W3 B- s[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮
! F6 |# {# j2 C1 q# U7 _dm420.tar) q7 N5 Y* O, G. J8 o+ g
setup
  k. ~/ Y8 }# H! W9 C! I: s( p+ u& J! {
* U1 y3 z5 u, g6 w+ b3 X  |. U安裝DBMaker( I; o; s6 |  M7 {4 K5 I* s6 O# e" Y
接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。
9 _' Z+ E# K* B" E. V6 |8 [( A2 L8 e$ r& a

3 ^9 O! I% ?' D; {8 T[root@support tmp]# chmod a+x setup <==切換成可執行
8 m3 i. _0 f" U0 u[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝
; y8 {) m" j3 k" F) {[dbmaker@support tmp]$ ./setup
& ^' ~# v# t+ `: n! S4 K# e, S4 c4 K6 B2 _$ A7 P$ a# I

5 [$ z5 Z1 T- R9 K4 ]7 M0 R==============================================================
0 x4 @9 f* r- ~2 |DBMaker Database Management System Installation
3 N% i( l" P/ o2 j5 v* {0 M- c! AFor DBMaker Release 4.2.0  p- T5 h/ j- Y) m5 U1 Q; [* H
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
- x" K7 [' S# C, `4 \8 g- Z2 t2 j. `==============================================================
8 w  h6 i' f9 RInstall Components:. C9 S! |: z3 |4 u  q+ l
[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]
  J& S  g0 m' m9 r[B] DBMaker Client ............... (yes)
4 m% Y% [- i" X& }1 ^0 ^[C] Sample Programs............... (yes)
  ^7 Q5 L4 D3 b3 X7 j7 x[D] Tutorial Database.............. (no)4 n' V9 ]9 _% @% Y
[E] Documentation ................. (no)
9 T. E' N; Y* Y0 CInstall Path:
" |. M) {# k# {DBMaker Home directory: /home/dbmaker- v$ a+ G6 L# e. i) C) t- m& J
[Y] Start Install [N] Quit( w) }+ u, ]. i
Please press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝4 T3 O4 N, O* V5 d3 ^
6 h; e) E. D3 g% Z$ e& g3 C0 I
當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!
2 V3 ^* u0 t# f
5 l' c& x$ P+ L+ Y檢視安裝後的環境
) R) h) I3 q0 ]$ F  C1 E0 d在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:2 Y! m6 a3 V  l7 T
+ E% Q1 R) s1 K
--------------------------------------------------------------------------------
0 J6 [  g. _- M/ ^8 L4 a[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!
' B: g, q4 l* s& O1 ^( n[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫
9 i4 y( T* O* `" a. E" r( RDBMaker 4.2.0 (#4721, 20040924)
3 a: M' c4 X3 U6 f, k% |Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
; d0 R* x; Y7 lSQL Server bound to port 2450 <==已在埠位2450上準備接收request3 v( z/ @1 j' _  C/ Z$ Q
Database Server is running in the background mode.0 z2 ]- p, f! G" ]& Y4 z) u
Process ID = 15668! z( }+ E1 L1 C  N' o5 x
" Z6 b2 \$ O4 X. W  U/ K
這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。
6 S1 x. _' h' T0 Y6 `4 m在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。$ ]7 H" e0 ?7 I  {- D
, F4 |( a9 T2 p$ l: F" f, ]: d
[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/
0 ~! d3 _- i+ f2 N" a3 A& Xlibdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.0
9 I" ]) R( K# P% X  V: d2 U# zlibdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so/ p* j6 l( u$ @, q9 v0 x2 X
libdmdttut.so libdmudf.so libiconv.so libxerces-c.so.21/ a( i% x" h' r0 y6 S
libdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.0
* o) H2 h4 [$ G; Z2 S7 J+ Z8 E% s. \! ?4 Z0 E" _
其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。7 M* i* |7 J5 y7 T6 ^

) s% e- R  }8 B' S$ k3 ]安裝unixODBC. S$ x- c6 ~; q' |' F* S/ F
接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。
- W3 i1 h! y$ x2 Z7 d* J首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。/ r# s) s0 ?$ l
接著,我們使用rpm將unixODBC安裝上去:
, c% m; S$ d/ w, f8 W. a# R( v& R4 V4 b- Y+ m
[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm
' S8 z: U4 ~/ D9 ?5 V9 Twarning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e1 T: K0 {/ k# g/ X( ^
Preparing... ########################################### [100%]
* o" I: g# d! Y5 E: ~1 {8 @+ m" g3 ~[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!
" K$ J) I1 L; ?7 ]) F0 z7 S4 U/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點
) V3 H0 V5 K0 L: W9 t" F+ K1 Y/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點
& C- G; w7 [! Z  b/usr/bin/dltest
' a" b; l) ^; P0 J2 z/ P' p/usr/bin/isql
7 d# I  M2 Z- c* `/usr/bin/iusql
- U' F/ `+ U1 k, z2 |3 o) x6 j7 C: l/usr/bin/odbcinst
- d# S- g8 ]' k/usr/bin/odbctest9 t5 F; X8 X" B. d  I  w
/usr/lib/libboundparam.so.1' b" H! O% v: G+ X+ Q
/usr/lib/libboundparam.so.1.0.08 ~1 Q# f. i$ O
/usr/lib/libesoobS.so.19 V5 M# Y4 [/ k7 F. u9 E
/usr/lib/libesoobS.so.1.0.07 U8 N5 O/ l# P- y) `
/usr/lib/libgtrtst.so.11 |7 G2 H. M: ~4 O, m2 E
/usr/lib/libgtrtst.so.1.0.0
6 ^# ^4 A: s- V8 S5 c/usr/lib/libnn.so.1
# J# H2 a1 m) N2 T* b: c9 u. T/usr/lib/libnn.so.1.0.0
' d- ]2 Z5 y* v' S  J/usr/lib/libodbc.so* N. Y* U! w8 w6 Z: U+ T( T
/usr/lib/libodbc.so.1
% S8 j! T3 v( J- E/usr/lib/libodbc.so.1.0.0
% }& G+ I' v" }8 F............4 `& I6 }( j0 t# H

: m+ i, J3 M9 J7 }  q$ W6 `+ \( @  z. Z2 D0 S

$ \- r" A" H1 B設定unixODBC連接DBMaker 4.2
) h) V3 n. z$ Z$ o4 n* j4 Y- `6 P如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。
4 Y$ R$ C/ V) q+ u; r! M
/ O7 J7 y0 k! L# @+ Q+ ]2 Y, _設定Driver
4 V( M2 j7 C2 J% ]+ I+ ^在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。
6 t% X4 D( H$ X% [; e# z. m# t( D1 f但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:) E; t0 m6 \0 _4 H% M) J
' D7 o6 l+ Q4 u  }, j- b% T' L
[root@support RPMS]# more /etc/odbcinst.ini
* p. [- Q9 t9 P5 j9 F# Example driver definitinions7 C) M/ c) J! @* O- T% x; B
#- N" C0 w! C# u6 K9 b
#
( ?5 M8 B4 b. e) a" E& I9 F. G  g. Y" X3 v
# Included in the unixODBC package
6 T  P" t- B0 x% V[PostgreSQL]6 G8 k! r5 O/ h/ H
Description = ODBC for PostgreSQL
6 ?9 N$ m! W: Q. s' A/ XDriver = /usr/lib/libodbcpsql.so+ W/ H: k, R" G
Setup = /usr/lib/libodbcpsqlS.so3 B; V6 f3 W7 x3 H( P8 k
FileUsage = 14 W" }$ A' k8 d/ a8 F- Y. h0 _
....3 S  [5 P4 x$ U9 X; z% h7 g
[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義' o* e, v3 h8 x+ u2 [
Description = ODBC for DBMaker 4.20 l- J8 ?* v! e; ?( i
Driver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑
/ K* \6 [) H8 U/ R& T0 p8 j/ O#Setup = /usr/lib/libodbcdbmakerS.so
! r+ }3 E+ a( {' i# |5 o0 P+ S0 n# cFileUsage = 0
$ q$ b+ o8 \: ^6 A# ?) a0 a% d: m2 c5 b6 i# L% {
1 a6 \6 Q4 \; C, @1 p
在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。0 N8 d/ x% {5 {4 y* Z
9 O1 Z( W! K* n; }
設定ODBC DSN
/ B! W! n) h6 h. w  ^& r接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!2 ~9 f& \) E- _3 J* ]
而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。9 p% b) P& P" j% f+ U  L4 A5 A
由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:
0 p$ [0 b# Z. d* M
0 B8 w2 ~+ |3 W1 Q& G# T[dbsample4]2 `- u4 R3 u- N: D
Description = Database for dbsample46 M  E' R0 `; e: Q. z; ?2 {
Driver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同
( x0 M; {& f0 b3 F, {( WDatabase = dbsample4 <== 資料庫名稱
5 d' O; F) Q" M. O" g+ u; l: yHost = localhost <== server所在位置/ |+ C* c; Y) t, ]3 d
Port = 2450 <== 埠位置
) P# B! a& V# K1 v( R) g. O5 C- w( B+ w4 UUser = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱)
* _. r! c- P( n: ?9 ]8 Y3 k( iPassword = <==使用密碼 (DBMaker預設所使用的管理者密碼)
! N4 f; R' l  u2 q; Z& E當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)3 B& p. C/ w* O$ x

9 ?1 E6 l6 k5 N# r. Z0 B0 m測試連接- l; p5 I+ g8 e( G' F
接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為:( _' x0 n( z9 Z, R: t% t5 I
+ y7 P) b3 O  B2 o  O. v
isql DSN [UID [PWD]] [options]
% \( o2 q! ~) Y1 U5 o: M我們直接用下方命令來連接資料庫:
1 Z+ H' j  w8 Z# G: D! k$ S. y; ]$ R' N6 g+ n/ Q- ^- m5 x: |
[root@support RPMS]# isql dbsample4 sysadm& a# K5 d% b) b5 M

: Y! }4 {9 N( @& y! ]+---------------------------------------+
! B# }. ]9 V. L) {9 p& u+ P# |
7 \9 N! g  a: S( Q| Connected! |
' q) Z$ U1 D: M+ K1 n3 z, a. l+ T- w; @
| |
$ ^, k; _9 w; R4 y% u* ?+ L* |
8 K4 v" L2 V8 o| sql-statement |5 i- x, D) C9 p$ L' j

" _! W7 B! i! j| help [tablename] |, P# K( `# {: X
1 ~5 C/ L0 d/ y; H' y+ _
| quit |+ h+ w. u5 r2 ?1 y' }+ V

, [3 \# i' Q" p# G3 P| |" ~% c1 {+ Z1 y! Q4 ]: B
. u+ x9 |# z: X0 Z+ p
+---------------------------------------++ v0 h- _% P8 l3 \0 W
* S3 r) G. I3 y% ?8 e
SQL> select * from SYSTABLE;+ Y' n+ ?7 L% M7 L/ q/ |

3 l+ X. G' `& s3 g.......) S6 @7 L2 F) c% @* B4 k

7 [4 d* S1 K5 D& }6 s& Y+ R  ?1 \8 s4 d# u7 Y( h: Z% F2 u! _" y; u
這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!
$ K) o4 [' K+ h; O) i- X
, U* e: g7 n3 J; O" PPHP+unixODBC+DBMaker
6 V6 r2 e$ g$ U- E! G0 _, h現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:1 k3 b$ b7 @9 |7 R" i; H
=>存成phptest.php( `# {/ M4 c. H9 ]% d' l
然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!
' e0 M9 ]/ ~7 x* E; h* `' |( D接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC!% k" @) p. Y% @' ^# j( Z6 W
若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:  J* \- s0 n2 @* Y2 I
9 {% o4 M! H2 h  y7 w
很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!
" X, p. O9 \+ ]有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。2 O9 V3 G. G3 J- l: X  X
至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~+ |0 V6 Y1 G5 V7 W2 }

5 g" c: H" Y: F  H3 i: D- ^+ y結語* W0 `9 @) ~$ Y( x* S9 ]2 ^
使用至今,我們發現unixODBC至少提供了幾個好處:
- M  V4 `3 E4 l提供了Logical DSN對應到實體的Database Name
( X/ D7 S0 _# G3 v可同時連接不同版本的DBMaker & B8 ^. K$ K4 g+ h7 Q* a1 q
8 C+ N0 L* \0 D% D+ M) Z( S
提供了邏輯與實體資料庫的轉換
1 O) x% h1 O* u6 w; {這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題( v; w& t5 `; _7 ~% d4 @9 f

% U" v0 ]" m4 P  h. W* V  l連接不同版本的DBMaker+ ], Q1 j+ S  K4 }' C6 R: m5 @& V
這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成:4 h- p5 ?  ^& m' G! A( F/ B2 m, I9 f
./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars
2 o0 c7 y7 t$ ^! U$ }在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。+ \0 W5 y) v2 ?1 x1 ^' i( i( Z8 N9 q
若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。$ K9 ?' N' A' ]: Y
所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。7 P7 a/ J# c+ b: k4 H! Y  C5 v
但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了!. E% K4 H4 @! x- b' ]4 y

  F/ c( A/ W* i3 Z9 A" k" O更多的應用
) a7 ^2 H, k; _- i# I: k目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!

TOP

發新話題