打印

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

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

技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
1 H, z. s2 @" [% x技術專區 - 如何在Linux上安裝 unixODBC + DBMaker   x+ i- F' u  [# ^% h4 S, t5 `- h/ h

目錄

  ' q) }5 B; [: j2 J' x. n" ^
1 如何在Linux上安裝 unixODBC + DBMaker
. f7 y0 B( T/ P% s8 c9 S. A% t
! J+ L9 N/ A, r* u; ~2 unixODBC介紹+ _! a$ V- @( q
$ {: k+ o4 Y( f7 l+ E! Q' m
3 DBMaker簡介
: @8 n+ m5 y  x3.1 DBMaker在Linux上的安裝
# `, G+ U$ M  N' N/ Q3.2 下載DBMaker 4.2$ X1 x1 E3 l) O
3.3 安裝DBMaker
+ H' b. H! m3 v7 X3.4 檢視安裝後的環境5 J0 |' J# o1 s
2 K/ g2 q5 x7 @1 y1 R; y
4 安裝unixODBC4 ?" H- f3 t  R
4.1 設定unixODBC連接DBMaker 4.20 [  ^$ P2 @  D
   4.1.1 設定Driver
$ z" j- X( M* p1 X. P" @; m4 W0 S) V   4.1.2 設定ODBC DSN
+ _: U' A0 u) D+ V; M3 T- \   4.1.3 測試連接' D0 K! n# [! u4 @' T6 x
4.2 PHP+unixODBC+DBMaker
* G2 X% G; E* i
) ?) R; J1 L5 B3 p. X* c/ P2 j& y& J5 結語
% D: G. |3 z0 O; A4 y' K" M- L9 ^5.1 提供了邏輯與實體資料庫的轉換
0 W4 I8 r" Z) [' ]5.2 連接不同版本的DBMaker) h; U, h7 ?# m0 k0 ^2 e
5.3 更多的應用

6 s9 ^- L1 d+ ~  F
6 }) ]* h9 E) E
' D+ \  l# q) B3 g" k如何在Linux上安裝 unixODBC + DBMaker' p4 X4 g8 B( W9 T1 t
在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。 6 ]! X7 k# ?: @3 z4 x& X$ P
( X" F6 v" b4 S' c- `
6 _' v2 \9 N# Z1 x0 g

% N6 }' c/ F; T$ o# n
& B3 R+ H7 |  Z; m% munixODBC介紹7 {3 V; w  \9 f' I
ODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。
) c- |' L' z6 ^$ C9 G, s5 ]9 R% i+ B; P& O0 w
在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。
$ f+ Q1 q$ e9 n# R  R9 x: r0 S5 ^! T- i( m: _3 m& \
這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。
" T' t# }$ @/ }( T9 r( t0 z9 O' m4 A' C1 j) X8 M3 [) m
這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!! 5 j* L- l) Y1 y8 y* C$ ~
; s: K  G: u* T
有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。
& w% ]. B+ c" N; Z' z0 f4 B9 |: k, I5 b6 l+ T- Q2 g7 V
如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。
# a( z) i! R8 w& R% p/ Y4 T: U+ B
5 z' i# w5 d( q4 a9 d3 t6 P( w3 n# K; fDBMaker簡介
. b$ g" D9 v- l$ l& h" KDBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。 " ]; c" y7 [1 q# ?
, i3 R8 e; p" S' h
首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。 3 _5 N; T/ E) Q1 u/ M- X
7 t0 Y( v% B$ K
DBMaker在Linux上的安裝
( ]- e% y4 }) j, d* j加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好:
8 P+ Y5 P' ?6 i7 Y) w2 C; v& b# L! v7 n$ v

, G& O1 [( b' ?9 C[root@support root]# adduser dbmaker
0 r# Q+ d: E& P5 J. q5 w. C+ \4 L' J[root@support root]# passwd dbmaker
: F" {0 N7 T2 f! m+ `. jChanging password for user dbmaker.
5 ~1 a6 M7 J4 r6 m1 B2 L9 ^0 kNew password:
3 z* |9 Z( u$ ^6 d# r0 KRetype new password: / ]/ y2 B9 {& {, }
passwd: all authentication tokens updated successfully.
' n5 {& @% B8 p- Y' k5 c) r$ ~
. @5 Y5 ]" p& x% Q2 x- k6 P% i/ @! M一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。 9 M6 Q) F$ E, }! ?" U. h! R% r3 [
+ Q0 W9 d& x. |6 [6 h8 K/ j
下載DBMaker 4.2* {# S' ^  V; P) X  ^
接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下) + n) u0 P- V3 B- [

# n5 s* B7 e% H) N& q, Y[root@support tmp]# pwd
) B: r3 M4 a* f/ `; y/tmp& ~8 p3 O. s' ^9 G) X6 z
[root@support tmp]# ls -al dbm*. u5 I; w+ [) i% U6 Z9 a- ~
-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz8 M! t# E/ \9 Y1 z5 X
[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮2 k9 q8 C! `. A* a" ?# \: e9 d
dm420.tar) m" ^4 |* C* r0 W  X
setup
' ?( @. @& `- G
1 [( Q: e2 F6 e9 j, `  Z安裝DBMaker) n9 C" s- I, N/ P6 Y* L& `% c( t
接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。 9 ?& u, N) r+ j( T

$ e0 L& d7 w1 B5 `* c! c. `
( L3 Y; ~7 I2 B/ `3 }2 q[root@support tmp]# chmod a+x setup <==切換成可執行
$ {% i6 L3 J5 W& e$ f[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝8 C7 T; Y, J( f4 N9 e
[dbmaker@support tmp]$ ./setup
& t% f! {, `$ z
& `+ a: m( g  J9 \  g" m0 P
! \/ ?$ q& q/ Z& A8 |==============================================================
" \- S  L: \% GDBMaker Database Management System Installation
5 G% p  R/ V4 M4 M) P6 E- c4 A  s. ZFor DBMaker Release 4.2.0: Q$ |; M1 k% G. L
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
; R) Q; a' E% M. o1 c==============================================================; H  r( d  a+ E1 a. R
Install Components:
' ]1 H' r0 n( t3 e+ ^7 f[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]$ r8 @8 Z+ F$ }7 M$ `
[B] DBMaker Client ............... (yes)
: q( Z' t) \' H5 I& X+ K[C] Sample Programs............... (yes)  ?9 J4 i9 K& F4 o3 r! S: L) q
[D] Tutorial Database.............. (no)' A3 R+ `+ i4 J3 N
[E] Documentation ................. (no)4 z; e" ?5 m+ a
Install Path:
2 P: \0 p, q) c: BDBMaker Home directory: /home/dbmaker: n3 o8 [8 ?2 \8 H' Q. A: l1 a8 Q" j
[Y] Start Install [N] Quit
3 |# e/ L" b. WPlease press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝9 }# D; E5 v9 x5 [0 A( c, w- O
- l; m4 e  D6 C6 J# `, ~
當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!
2 \3 b" E0 X2 j& T! T( r, E0 [9 }& D$ z
檢視安裝後的環境
3 }8 T3 o9 A" C% s& f在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:  V& h' x; t  _, f/ |- ^! {+ y1 E

! T; `+ P+ j7 N! l) w& S* r* S, Y- ~--------------------------------------------------------------------------------9 R1 b3 T: O5 ~0 ?) }7 n
[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!
4 W2 O8 b- E' E+ M' ], v8 P[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫" l# w0 u% c7 v
DBMaker 4.2.0 (#4721, 20040924)% \7 W# f: v: _3 [; l! n! Y7 K) f
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.0 H6 r2 X9 k3 o- ^6 j% M
SQL Server bound to port 2450 <==已在埠位2450上準備接收request
3 w7 ?7 c, B7 a$ _7 O" VDatabase Server is running in the background mode.5 O# f: G; b. r9 {  h
Process ID = 156686 Q0 n4 ?; V& a! k. ]

% n1 e2 b. h1 k6 z8 n這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。* [; {, S! n% G7 C3 ^3 t) N
在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。& L' \/ Q! }5 K& k, G# o

7 i2 O  V5 j2 S[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/
/ c6 u9 u  X3 v( f0 H* U* |libdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.0
" ?+ [" @4 B% U/ {libdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so
1 v  E; `5 q: ?( I4 n8 W7 K5 B/ slibdmdttut.so libdmudf.so libiconv.so libxerces-c.so.21
5 W9 Y) p1 n! j' w8 S: F3 R% K' |1 rlibdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.0
: g+ I! s  n# T. |9 e) w2 }/ I. t3 d7 @+ d( s
其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。
, J( u' G7 d# S2 a8 t' U' k" t7 o/ M0 u) L; j* M0 I; A
安裝unixODBC
+ C: f0 H; [! `接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。
+ j( J# U. Q  Y& {首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。
1 v( e& w4 L) A7 O$ t4 i接著,我們使用rpm將unixODBC安裝上去:) w! b3 r$ S) P- V, X: N& q( C
: R+ ^$ ?8 ~: k7 z* Q; `  G
[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm
( u4 j# p* X, {3 |1 ]% w+ M# Owarning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e0 W, }, `/ J8 V- z# ~' v4 j/ P
Preparing... ########################################### [100%]
  `5 z' W6 t( J7 O3 ^[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!+ G4 F. [, e8 a" D! \, D
/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點
8 }) {. x, x: o: x& q  u/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點8 O1 G% Z$ j$ \' O$ ?
/usr/bin/dltest
$ j; m9 Z& D: S& M# f0 M/usr/bin/isql% t) b; k- [1 v4 g) G* v" ~/ A
/usr/bin/iusql
( X& e/ g# \) z- E1 J. j/ k( l/usr/bin/odbcinst
  \  H& Q% B; B8 E( b, n7 t$ g/usr/bin/odbctest. v. o4 j9 S3 [/ E8 B" t
/usr/lib/libboundparam.so.1) Y! C  I% a+ G, Y
/usr/lib/libboundparam.so.1.0.0
0 m1 j* D1 ?5 ]( u/usr/lib/libesoobS.so.1) I0 `' ~7 o2 B7 q: J. _
/usr/lib/libesoobS.so.1.0.0
' `  H) J7 n6 |9 e% N6 w/usr/lib/libgtrtst.so.12 G0 [* x& O1 C6 n
/usr/lib/libgtrtst.so.1.0.0
+ r0 ]& h3 ~& `' L8 j" L4 U/usr/lib/libnn.so.1
6 x& u" ~7 B, R4 r/ D3 a2 z/usr/lib/libnn.so.1.0.0
7 Z! ^4 l+ @9 z; [/usr/lib/libodbc.so
  T0 l0 J5 A: h6 m/usr/lib/libodbc.so.1
7 z  k' R( |' S$ }* _) v9 v  g" Q/usr/lib/libodbc.so.1.0.0
8 a& R! H  v( B( \7 k............+ w& [# a* `& m0 {! p- ]
+ B3 U. B3 K9 _7 a- q; H4 H

  a5 y. z' M/ |
* A0 F7 K% S# U1 t: v$ Z8 N' u設定unixODBC連接DBMaker 4.2
- o3 D6 N* l4 O- g( }/ h如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。
# D% U6 ]: @3 j2 J$ z; N0 u
& \+ G4 ]/ [4 W* U4 N設定Driver( J& R- A  P# x7 ^% _( t
在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。  [4 x) h$ r/ D
但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:# T: H* m+ ?0 k& A

: e2 h  R) A: J/ _2 c$ |[root@support RPMS]# more /etc/odbcinst.ini
5 L8 j2 `  D0 b' q7 t% s0 M# Example driver definitinions' ?* [: |% d' ?4 B! K9 O
#
5 z+ H+ Q3 Q8 X( t3 q- e#4 a$ ?3 R) ]( G4 z) m) \

4 d! S/ A. p  _2 s2 Z# Included in the unixODBC package8 w# `7 e' \7 m1 \
[PostgreSQL]+ ?5 e" m, p0 U
Description = ODBC for PostgreSQL5 G! m* A5 j; x: H( x  ]: s0 J/ N
Driver = /usr/lib/libodbcpsql.so9 M2 U) J) Q0 _6 m* z
Setup = /usr/lib/libodbcpsqlS.so
8 R. |4 y7 x9 j$ s: \% A. B$ Z6 QFileUsage = 1* f2 c5 s2 k& t1 T
....4 C) l$ s$ n" c" B, L5 C* e
[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義- w" P! h' N" Z  u  e; z. {  E$ P! h
Description = ODBC for DBMaker 4.2
0 |: O7 C6 c- N* c. WDriver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑
( _" u6 o2 {6 z2 j2 f+ Q( E& x# u#Setup = /usr/lib/libodbcdbmakerS.so7 W3 d- p' R& K/ ]: C' p% N
FileUsage = 0
$ X- i$ A# _& K! X7 x5 ~1 l$ y% v4 E+ L6 P& R
" K: S+ i# j0 {, E
在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。
+ S# ^/ L" n7 t# A3 `
5 X) q3 F( k( Q5 p設定ODBC DSN
# W! N, `9 {3 r接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!3 u' t5 }& X: s& J0 \$ G: k
而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。, S7 E  c9 v0 k! N  g
由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:
- O3 t5 B8 x; m. T9 q4 o; c- W! ^
[dbsample4]+ T/ S. a, a9 c" @
Description = Database for dbsample4& k  b  t$ f. S2 P9 _* k6 x4 p  ^
Driver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同
9 G* v  q) k, _7 _3 ]. c: E# tDatabase = dbsample4 <== 資料庫名稱2 r9 d& o) g3 i0 ]
Host = localhost <== server所在位置
( \4 j. B& }( ]* |7 q3 jPort = 2450 <== 埠位置
$ c3 f) X: F& s3 x4 KUser = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱)5 D$ J- x' \% y  o3 I5 T
Password = <==使用密碼 (DBMaker預設所使用的管理者密碼)
; }. J" y# V" @, _0 T* F當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)
8 ~% {( ?# f, y, i9 k  M+ z, s; W3 j3 q
測試連接' t4 Q& k2 s8 l# U2 B( H. F! o7 Y
接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為:
/ u6 U0 A" R, F& Z0 a! j- i7 t0 w1 h! k) v$ |
isql DSN [UID [PWD]] [options]/ J9 j6 e" a/ @; C! ]
我們直接用下方命令來連接資料庫:; S- ^( j" n1 B2 e; l
0 Q7 b3 x1 @4 C! |5 Q- @' S- R/ e
[root@support RPMS]# isql dbsample4 sysadm/ s7 k! x0 Q" ]$ m* U

1 k9 i# C4 w  c3 x+---------------------------------------+
6 i+ M. P/ u" w1 r' e$ s$ W! r4 v2 E- S/ c; Q7 b+ j4 n% x+ T
| Connected! |
6 X2 A7 F7 r/ P$ y2 h6 e9 _$ @/ r
| |9 Z5 @0 A( X6 f$ M) z: B# H
- m$ @/ M  \. I6 _6 ]
| sql-statement |
, E0 K$ R; P/ e. s+ h+ ?8 S) a( m/ A, c9 ^3 e0 _8 h1 V
| help [tablename] |
1 t3 Q2 e: e- \; x1 W4 P
. w: R7 f5 [4 ~) T$ B( q: T; c| quit |2 U2 s& O+ R7 \- M+ }

- w  ^4 i- ^; m# S0 s| |
( z- K  O. \7 b
$ v& c$ }0 H5 s( o) k! g6 t7 }+---------------------------------------+
' z1 j! B) \' B! k* f
7 W9 E* c. d: H- t, v3 oSQL> select * from SYSTABLE;
' V; \9 y( P0 z" ]% U$ W# Q; n
7 t- j' I( _3 k5 m.......
' N8 s- g9 h: ^8 X, K5 O" Q  ]$ `# [! X: m  u2 M: J; R: g  ^

5 V/ e& t+ r! c" h這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!
3 M- @9 ~. J4 V2 z% T, V# Q/ l6 o2 t8 J6 L) j0 z
PHP+unixODBC+DBMaker
! p+ ~: X; ^! Z& j0 f0 P現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:
- f0 W2 T6 M7 Q- S0 E9 e=>存成phptest.php2 {7 s1 N: p5 Y$ @
然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!: g, b7 B. D; [1 H/ u
接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC!
' o, h) }" r8 y6 }7 i6 P6 j若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:0 j: o3 p" Q6 r6 [. j4 J1 M

' T: }5 R8 [1 K' G1 K' W# P# e很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!3 B( ^$ m% K% b. L% ^
有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。
0 C/ L4 B' e# z9 V至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~
! y& i, j: F7 l5 ?7 \2 |6 e3 p: V3 q
結語
: G: A) G5 V. {% A使用至今,我們發現unixODBC至少提供了幾個好處:
# B2 A& @+ c8 Q- w- e& v: f提供了Logical DSN對應到實體的Database Name + i& _" c; c+ [  D" \
可同時連接不同版本的DBMaker + e, w6 K: j# d1 w! m1 p
' \) G9 G& M4 }" w, J. w/ i
提供了邏輯與實體資料庫的轉換( o. A5 X1 L: U- B+ K* J5 V
這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題. D  Y$ X1 b: c& D. [* G
0 c$ L" t$ N- r+ T& x1 Y' e: U
連接不同版本的DBMaker
) q! S" G( q4 u! ^/ d; [: c, ^這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成:7 Q; m+ l( f2 n+ _
./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars
1 j  C! @: \; d* S0 l! n9 H在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。
+ ]! H4 O/ `. u8 K若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。  m4 @' r5 g( c- y8 c$ C# g
所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。1 s6 }- \: H2 Z
但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了!) B6 U! S' O! Z' z9 \& k

  R% S, S* o: s3 |2 N9 ^( H4 g' ~更多的應用% K/ @6 j' B) I; ^( J
目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!

TOP

承接,深圳广州武汉重庆文章19

flash配音动画配音北京配音100录音棚提供光盘制作光盘刻录中国配音网·北京配音100录音棚承接:深圳广州武汉重庆成都上海合肥沈阳长春大连天津太原兰州西安银川哈尔滨郑州济南青岛南京杭州温州厦门福州长沙南昌宁波石家庄等城市 ...
$ Z" Y* P8 k% E8 ohttp://www.peiyin100.com/flash_py.html

TOP

广告业务员

北京名传天下配音工作室,招聘配音员,广告业务员。电话:010-83265555北京市名传天下配音工作室主要承揽广播节目配音、电视节目配音

TOP

凤凰网成首批提供航班动态查询门户网站之一

民航资源网2009年9月7日消息:凤凰网近日宣布,凤凰网航空频道航班动态查询平台正式推出,凤凰网成为首批提供航班动态实时查询的大型门户网站之一。此前新浪航空频道、新浪天气频道已经推出了此项服务。北京到马尔默机票   g! l: W1 O# p, K$ I

0 \& L- \' m& n6 x' ]" I& h  据了解,航班动态查询是一种可以实时查询航班实际起飞、落地时间以及航班延误、取消和备降等状态全面信息的新型查询服务。旅客可以凭借这一智能化工具,根据所输入的航班信息,精确查询到每个航班在当前的状态,为自己的出行提供实时有效的参考。北京至马尔默机票
) T5 r. X0 d6 G8 P( e  旅客可以通过输入或选择某航班的出发地和目的地,查询到某航线每个航班当前所处的状态,包括每个航班的计划起飞时间、实际起飞时间、计划到达时间、实际到达时间等数据,还可以查看到该航班当前是处在起飞、到达、延误还是备降状态。若网友直接输入某航班的航班号,即可查询到该航班在当前的实时状态。北京到马尔默留学生机票
# s- c1 A4 K$ C2 O! E: H  n) i0 p2 v  据了解,凤凰网推出的航班动态查询服务,为国内第一家航班动态商业数据服务商飞友网提供,采用了VariFlight航班动态技术引擎。凤凰网相关人员表示,凤凰网尚属首批推出此项服务的中文门户网站之一,此举将为广大网民提供更加方便实用的生活信息服务。北京至马尔默特价机票

TOP

彩铃配音粤语配音,南京名扬配音网,咨询QQ:516793858.

中国配音配音网专题配音广告配音外语配音彩铃配音粤语配音多媒体配音,南京名扬配音网,咨询QQ:516793858.http://www.peiyin100.com/

TOP

麦当劳专用机,薯条工作站,肯德基

封口机,豆浆机,蛋卷机,脆皮机,蛋塔机,刨冰机,爆米花机系列,棉花糖爆米花组合机,多功能饺子机,大连科信机械厂0411-84820855专业提供小型机械致富机械无需加盟同样效果网址www.kexin118.com; 电子手摇配钥匙机,验钞式点钞机,补鞋机手机加香机,长效香料,衣物加香机,美甲机,烤鸟蛋机,食品搅拌机,冷面板面机,压面机,肉丸机,班戟炉投币感应擦鞋机 章鱼小丸子机,烤肠机,电扒炉,韩国铁板烧, 炒货机 ,珍珠奶茶封杯机及原料,固体酒精封杯机设备,电子手摇配钥匙机 ,关东煮机,豆芽机,多功能膨化机,饲料膨化机,无烟烧烤炉,中东烤肉炉制冰机,香酥棒机,旋转式啤酒烤鸭炉,各种红外线烧烤机,电炸炉,蛋糕机,多功能切菜机 多功能粉碎机,, 汉堡包机,贝壳酥机,鱼丸机,包饺子机,梅花糕机,豆浆机,浆渣分离机,煎饼机,膨化机,等系列网址www.kexin118.com批 发零 售量大优惠.电话:0411-84820855,84792022,86949198,FAX:0411-84820855: d% W9 h9 d! Z0 ]
QQ:99792190 44984055.
. N# k3 j0 \. F% o2 c: S$ H& f
薯条工作站,肯德基麦当劳专用机
精品推荐, f' t9 L1 u/ Z6 f, Z2 `
. W- H) W- q! b& u
商品简介:台式薯条工作站 型号:ST-01 保温:红外线保温 型号:KX-JG-1 规格:800x710x650mm 电压:220V 功率:0.6KW 价格:1550元 &nbs
0 R' |* f$ |5 f 商品参数, Y8 I( i  Y$ c: ]" M! _0 {
  • 商品名称:薯条工作站,肯德基麦当劳专用机
  • 商品关键字: 薯条工作站, 肯德基麦当劳专用机
  • 商品品牌:大连科信
  • 商品型号:商用
  • 商品等级:精品
  • 市场价格:¥1550元
  • 剩余数量:203台
  • 关 注 度: 31233
! N7 G; M7 [6 b
详细说明
: l8 Q3 h' c& y9 X+ s. K$ f
6 I, o' l) [3 k9 {8 u/ Y) E# c  e1 ]


2 `& b  u9 W* W. X1 p7 R% B6 V

               

                  

台式薯条工作站

3 L8 r8 \6 I3 t* a

型号:ST-01

1 K' `) |! |& O# V+ d  ^3 m2 {

保温:红外线保温

/ j3 v$ f- u9 H  j! Y

型号:KX-JG-1


  o; c, m! d5 c8 V* ]

规格:800x710x650mm

' G0 L5 @8 \# `  d

电压:220V


$ y8 K8 b! f/ H8 D& }. {: Y( ?

功率:0.6KW

" \! B. a/ X! ]+ b3 A+ F! X5 T

价格:1550元            


2 |6 v$ {5 J. M7 I

% U3 X. }0 _% V0 x. v! P' ~: b1 }

                  ; A/ u% I7 r4 O& G4 ?- [

立式薯条工作站

' h: ]; ]6 g0 ?7 c; o+ Z

型号: ST-02

6 }9 I3 e1 g2 Z

保温:红外线保温


8 q$ Z- e# ]) \

型号:KX-JG-2

( w0 M1 P: P+ \$ {: @" p( @+ @

规格:1000x700x1570mm

9 B4 `1 s' C6 D' y' O. Y8 U

电压:220V

! q% l$ q, |4 b/ L

功率:0.75KW

/ h  \7 B+ T8 U4 X) D1 z' q

价格:3980元           


4 X1 B* J, s  [8 r

" \0 D" \2 A6 Q

TOP

幸福成了物质

  我以为地下城外挂只有用有了才是幸福的,然而我错了。
( z5 w+ @7 f; G" C8 i' l
! w" J9 m, i* [' W9 P' y        一些东西,一些人,注定QQ华夏与你只能擦肩而过,刻意的挽留,只能心力憔悴。偶尔的时候,放开你才双手,不刻意,不经营,只是一个简单的动作-----松手,幸福就在不经意间被你留驻了。
; b# O+ O1 `  w7 Z- s5 f8 r6 c; f/ P5 e8 _$ r& v" Y- H  Q# j. h
  坐在空旷的公交车上,随车冒险岛外挂漫无目的的前行,看着街上为生计而忙碌的人们,他们穿行在高楼大厦间,那里已经成为了他们的第二个家。他们脸上呈现出疲惫的容颜,定是昨天又为了几份薪水忙了个不可开交,他们幸福吗?也许,是幸福的吧,然而,我总认为,现代人的幸福早已被物欲所弥漫。% V1 o7 n! T4 d; G

: {( h* E% s2 p+ n        于是,幸福成了物质的代名词。现代人心底的永恒之塔那弘明净的清泉,早已随着生活干涸。物欲的幸福过后,精神的幸福在哪?
6 q* [' Z6 Q  B4 I5 w, l* d& n+ d- b, D9 g7 c5 L7 U. T
  大街小巷里穿行着看起来庸懒的人,显然,他们的穿着,他们的样貌,他们使用的交通工具不能与都市人相比,但他们有笑脸,对剑侠世界生活的满足的笑脸,,那是一张张幸福的笑脸,在人们的皱纹间绽放,在孩子与大人的牵手间握出,在平凡的人们上下班的身影中闪现。

TOP

支持!

支持!
9 a2 t: V! H8 Q2 c5 o) `9 t! J2 _! H9 c5 U
2 ~) u+ i3 p! q
! d6 w# p' a7 L* q9 I7 d' }8 U, |

" x* T; V- ~* N2 \! k
+ o3 S) C% N# j+ l8 h8 T
# [4 f8 E- I' _5 v+ E" t
1 A. ^" ~0 d5 O8 ?0 Z1 B6 M3 X/ }. n
/ v4 k4 E! J% y0 \* W% ]
' {* G; s: |' ^; F

' l; H9 U4 r* x, J' o$ |* A: n' K4 ^% v
% F6 P# `6 `' q
合金钢管 高压管 特殊厚壁管 Q345低合金钢管 大口径无缝管

TOP

支持!

支持!
8 Q# a! r- K' X$ s9 n. n
) {2 w! O$ T, M9 W) l# f3 A9 t. y! E+ O, n$ V
" G' Y1 l# O( X$ t% V( [
! x( v$ `8 ~  k' a
$ x: _+ z( F3 F) Y" Z3 w
0 b7 ]* @  c) x
8 t6 S) ]1 v$ c0 a- I- W

. v6 c; _. d3 p6 _7 L- P3 E) v4 A# Q0 s
8 I8 I: h. A, I2 F+ w) Z
$ d: z8 B/ M( K) G; F0 `
/ e7 a/ x0 @5 {

) Z: V: M! B! A8 \. n) P( F6 R12cr1movg合金钢管 15Crmog合金钢管 q345b无缝钢管 T91合金管 P11合金管

TOP

TOP

支持!

支持!4 D$ m; k8 J" f  ]
' m$ G8 S3 Z( {

! G& b* Q- y$ P; b# `" E. y/ k
; r! Z& x5 @( c; c! p/ z
* J5 d+ R. R* P6 n$ B6 s! v! c# |2 _( m8 h7 l9 U" j' W

+ M, T1 [' q4 L. y* F
2 y9 K& ^+ t2 Z- ?* d0 M: ]7 D! a- Z- e$ E  q( r' `
1 M! k6 F$ W  b

$ z! `# V/ a  i1 q+ _. ~, T1 y- w, H" `* _4 |; i
7 Z+ Y. @! ~+ |

/ r3 ]/ D% q' S8 y+ z暖气管 锅炉管 不锈管 合金管 天津合金管

TOP

發新話題