首先,到站点www.hughes.com.au注册后就能免费
下载该
软件的最新版本。m
SQL的安装相当简单,二进制版本(针对某一个
硬件平台编译后的软件)的安装只是将文件展开到用户某一目录下然后配置几个参数就可以。例如你下载的文件为:mSQL-2.0.3.tar.gz,你想把mSQL安装到/usr/local目录下,这时,我们需要先将这个文件拷贝到/usr/local这个目录,然后键入命令tarzxvfmSQL-2.0.3.tar.gz,这个命令将展开该压缩文件。一般,mSQL
数据库系统的所有文件都安装到/usr/local/Hughes目录下。接着就是配置mSQL数据库。你所要做的工作就是要修改/usr/local/Hughes目录下的文件msql.conf。
0 c5 @0 `. {5 y' q8 `
9 Z" Y! N* V. Z* Q- Z$ `% k0 W, C, U6 s4 }$ S
在实际应用中我们改动得最多的是mSQL%26;#8212;User和Admin%26;#8212;User这两个参数。mSQL%26;#8212;User指明运行mSQL数据库服务
程序的用户,而Admin%26;#8212;User指明能对mSQL数据库系统执行特权操作(如:关闭数据库服务程序的运行,创建数据库等操作)的用户。因此,如果你希望mSQL服务程序以database这个用户运行,指定admin这个用户能执行数据库操作,你要将mSQL%26;#8212;User和Admin%26;#8212;User所在的行分别改为:mSQL%26;#8212;User=database和Admin%26;#8212;User=admin。另外你还必须将Hughes目录下的文件和目录的属主改为database。在配置完成后,注销当前用户的身份,重新以msql.conf的参数mSQL%26;#8212;User设定的用户登录到系统,进入/usr/local/Hughes/bin目录键入如下的命令:./msql2d%26;amp;,这样就启动了mSQL数据库系统。至于带源码的安装软件,看一看README和INSTALL这些文件一般就能顺利安装完成。
# ^9 R2 B+ y% P- R
[color=#FFFFFF']
8 m5 j7 j7 s+ h, A
) R1 H. t2 J. d2 _& f( ]6 J1 t
- c2 g2 B2 @* i0 ^% M3 H! M4 s 为了将mSQL集成到用户的应用程序中去,mSQL数据库系统为用户提供了一个C语言的API库和一个解释器:w3%26;#8212;msql,通过C语言的API库,你可以将mSQL集成到用
标准C语言开发的应用程序中去。而有了w3%26;#8212;msql这个工具,你可以通过编写
类C语言
脚本语言将mSQL数据库嵌入到html文件中,下面举一程序实例进行说明。
: P: l* b2 ^% j4 e+ O. \. Y% E0 w6 \ x! Q9 H! [/ v
下面的程序片段要完成的
功能是将
浏览器页面上提交上来的用户名和口令与表registered%26;#8212;user中的用户名和口令相比较,如果用户名和口令正确,将在页面上显示注册成功的
信息,否则提示
用户注册失败。采用C语言实现的方法如下所示:
( ~0 ~! q# f0 ?" D1 {( N' O, X3 H, {5 L, a1 V
voidmain(intargc,charargv)
; S7 E3 w7 r+ J' \# L
6 N3 R. A. f! |+ E9 l( k# f //解析用户提交上来的用户名和口令并保存到变量username和password%26;#8212;usr中
1 E1 P" ?1 g2 }* K5 i
4 J9 H4 a" i6 r9 M …
( N8 d6 n, @3 m. O6 w z* C
% G& }0 {8 c9 j" V) [
//创建与本机的mSQL数据库系统的套接字
. m8 P; i8 \* B" ^0 Z0 h6 }
5 b; i& q" `5 S" Y. M* H sock=msqlConnect(NULL);
; s+ F/ l5 _9 k% ~
/ ~. u1 }& u2 h5 H+ w8 ?/ U //选择数据库test
+ V: U% | `6 j" g$ e
9 i2 k7 E& V' m$ B) O0 w/ J& _ if(msqlSelectDB(sock,″test″)==-1)
1 j+ S7 h% S1 Z6 J/ L
* D: e. O& I1 d' v! f //输出数据库选择失败信息
, D# M8 h. a/ y/ i- H
5 j8 J$ G; d% a/ w8 O& ]
…
9 X0 p% i4 c$ G: P; G$ k' g
# y1 @, c m$ W+ m' s) u) X& t9 |, ] else
3 v: \& h6 b$ d/ V
0 I0 R j$ [( _ sprintf(buff,″selectfromregistered%26;#8212;userwhereusername=′%s′″,username);
- _. v, E: ]; G3 ~6 O' b9 P
* [; ~7 @+ e: \ //以username查询表registered%26;#8212;user中的记录
. Y; }7 z8 Q2 l& t$ b1 I' R [- L
) h* u9 a% |4 B8 {2 S' g. k5 o
if(msqlQuery(sock,buff)==-1)//输出查询失败的错误信息
6 x; m9 j/ o% Y: Q* t/ F' t+ y& U) x
. h T3 | ^/ e+ B; ?5 x …
3 ]4 \1 R( N" a4 O
5 P9 S$ y7 G& B/ P) K" `! q3 j
//将查询结果保存到m%26;#8212;result类型的指针变量res
- W2 ^- _$ R. z5 r% l8 [, t
- Z$ ]* f/ I* n. o2 y
res=msqlStoreResult();
2 |- [1 q; a" E% W- G# L5 A; c
0 J6 O% I7 Z* J d! G/ p
//得到查询结果的记录数
; N! b( V0 ]/ c& ? s3 y
, v% j: u1 i! ^" t4 u- L9 n, e* _: h numrow=msqlNumRows(res);
3 J' K) ^$ _# K/ _. w0 F8 n! @, H; o' d8 E L! A) F
if(numrow==1)
; R- m& Q/ V ?* l! {
" ~+ ~- e `* @" Y //得到当前记录,类型为:m_row
# G2 f. v0 ~+ h L6 B3 P2 a$ k8 Y) C( \1 ~: X# X9 ~
row=msqlFetchRow(res);
+ u$ j5 Z! i' K2 m/ Y# W2 Q! ?
4 B( ?, B: [/ f( y //将保存在表中的口令和用户输入的口令相比较
& t( L1 F) I b1 o n& b: | O7 }0 v4 ]( U( K8 _
if(!strcmp(password_ur,row2))
5 |& x3 |) J! A" A0 H/ Y8 N+ J2 y6 m' U+ o
//输出注册成功信息
) K* h$ p" V2 h7 ^
6 s; ~. x* o' ^8 X: \ else
: B1 D( |# B# M
. ?( w0 Q7 |$ Z6 i0 t //输出口令不对的提示信息
& C4 [0 o) ~) L( V1 y: i
+ m; v8 r8 N) a3 u4 {& F1 X+ W
else
7 |! i& ~8 Z" H; E9 Z$ S r; A0 C& T7 x) `' ?4 p B8 ~0 s( J5 W7 j2 Y( A- l
//输出用户名输入出错信息
$ d6 s/ P7 |$ @$ I- p/ C
9 k! J! L/ C' [( n0 U3 S //释放查询结果的指针
/ \, a* o1 ^! }2 G) [- V
; p8 Q* a/ s: a$ z msqlFreeResult(res);
+ S/ b9 U' J( c" }0 F& y. W$ j Z' M: t: g
//关闭数据库系统的套接字
% h$ v5 a' W6 i" s- U$ Z+ o! U) ^0 L
/ K: ?- U4 p# Y# A msqlClose(sock);
# K, g" ]( T/ y1 x! W$ n
# {+ e: c% Y4 t, o( N+ w return;
% q: M* ?# m' z. M* E1 l
$ z* f- W, l4 x3 ~+ m
以上的例子包含有将mSQL集成到C语言程序中用到的主要函数,这些函数基本能满足应用程序的需要。如果采用w3%26;#8212;msql能解释的类C语言嵌入到html文件中,可以达到同样的功能。与C语言编写的CGI程序需要编译不同,脚本语言不需要编译,该脚本由mSQL数据库系统提供的CGI程序w3%26;#8212;msql来解释执行。脚本中主要的代码段如下所示:
4 l0 k* c. B' Q! k8 C @$ |' D7 C% b: q: {
〈HTML〉
+ W8 t S7 F$ J& X# {# P- F, T
( J+ Q+ {" g. Y9 E0 j2 `& [7 u. | 〈HEAD〉
- a2 f+ K% K X; z6 r9 |1 \/ z6 M5 ]) t8 k" L' }, u; Y
〈METAV=″Content-Type″CONTENT=″text/html;charset=iso-8859-1″〉
, @7 P- {9 A4 a3 I
1 z0 O9 e' p5 a1 v7 F! j! k$ ?7 X 〈/HEAD〉
) e2 D& L% B; f- J$ P
7 Y/ v* c9 O* ]+ E 〈bodyTEXT=″#000000″BACKGROUND=″/icon/back.jpg″topmargin=″10″〉
; y3 L9 r9 k. q) f& z
# P6 Y- L K$ ~( u B
〈!
3 y7 Q$ | l) z/ \" P# w/ T
& C; |$ A1 o" @0 h. ]3 h //解析用户提交上来的用户名和口令并
. z8 \# A5 L3 X" k
1 `% d* {7 A% o# q- L 保存到变量username和password%26;#8212;usr中
$ R* w* h2 F& u# {) }
% f) p2 A( j$ M8 \
…
1 I$ W4 i- s& {6 |1 O3 K" U! t! q, P6 e* ?$ z8 E1 u
//创建与本机的mSQL数据库系统的套接字
0 t# v+ l. X7 D- m, y2 R' H/ w2 a' F* q/ g; P% t
$sock=msqlConnect();
6 {7 Y- D, t2 s8 v9 U7 i0 `
% e- q8 c ]( t //选择数据库test
- z3 ~6 N1 v! O% w) S
" K$ G" c5 T/ ]( B! K H if(msqlSelectDB($sock,″test″)==-1)
6 d1 X8 ~ l; g6 O% ], n# I4 N
N+ ]8 y; f! F1 z9 C+ _- n //输出数据库选择失败信息
/ n+ }6 r0 {4 h& f$ G2 |( Z; ~4 t* P
% i: X( J# D: x* |$ I: k' c fatal(″错误:无法与数据库连接n″);
/ X# O# I2 R3 w
" g! L/ j$ @9 |' s8 _) G else
- P) F9 u" v( @* E9 z" {* r% [' h& l8 L; L
$buff=″selectfromregistered%26;#8212;userwhereusername=′$username′″;
# D# t8 B/ e1 t
8 L' l! n- B: O# k //以username查询表registered%26;#8212;user中的记录
, Y& `2 |, k: h9 C& {9 S
0 X! T' C0 h( |( w, R/ n
if(msqlQuery($sock,$buff)==-1)
: l; ?- J; W1 r+ V; t& t
' n1 k# v/ b$ V$ r* E% U //输出查询失败的错误信息
% L( `1 k/ H: {2 S7 ~0 v! y
; N4 o5 g$ q4 x4 T5 ^3 E
fatal(″查询错误n″);
, J o$ k' t: G2 g8 M: o! G
/ C+ U5 i, l8 O; y h1 @ //将查询出来的结果保存到查询结果的指针变量res中
3 r6 i+ m- ~. G; ~: a1 |; ^
2 M* }6 f4 b+ h$ }1 L5 |) z. g
$res=msqlStoreResult();
% \2 O8 T+ y( V9 t, O3 b0 z
. \# F+ d8 n9 [8 j- @ //得到查询结果的记录数目
9 X. ?8 v( _4 p
2 i6 R3 G# B2 A2 p $numrow=msqlNumRows($res);
, N6 Z: f, _1 P% M$ E% S
[color=#FFFFFF']
5 _3 J/ g* c' [1 a8 F, {( J, P. \; |# m; A- J: b' C! Q
' A* Z; K ?8 r$ R |( p
if($numrow==1)
0 L4 z2 `0 w J' b2 p5 i, c
: Z8 V& ?2 Q$ s# l //得到当前记录的指针
/ {; z @4 b) c, N V4 b- B
+ K2 |5 L$ H# B% d0 l3 w! @
$row=msqlFetchRow($res);
& O; B+ ?$ r, G* s
$ g' \( T9 E5 e( X; V //将保存在表中的口令和用户输入的口令相比较
4 z( A6 v2 L$ f. a" H$ z- e" L; A- _. }0 z4 L+ u" H
if(!strcmp($password%26;#8212;ur,$row2))
4 N6 O, J6 k; c4 X1 D: ~, C
5 Q5 z* X E" @( Z, Z //输出注册成功信息
; o& R* Z. M/ a* K" P* F/ @/ x
# H! U$ `& x9 I0 O echo(″〈center〉注册成功〈/center〉″);
. N {6 Q, f, j, e, m1 R- m4 u# X( N7 J; ^/ |* J
else//输出口令不对的提示信息
8 b+ Z/ t& {5 z9 c
- G: d, W( R, ~ echo(″〈center〉您输入的口令不正确〈/center〉″);
! ^# b& v: x( p6 l# A- ]
: z" U5 d! g! t4 u" {1 k
else
8 l2 D( C6 G/ X7 f% x( q
" F. b8 W ?7 x) k
//输出用户名输入出错信息
1 I: D$ d* A8 o
1 x% R% R4 c" ^0 ]6 q+ T' U
echo(″〈center〉您输入的用户名不正确〈/center〉″);
; |* i! r$ Z5 R! l9 Y
9 I+ v" ~% q$ |* c5 u1 \+ v
//释放查询结果占用的
内存4 ~4 r0 r6 o" d3 a
; f7 ?: `& @# [6 h' @8 K msqlFreeResult($res);
8 Y1 A* O. O; O& R. ]+ Q8 ^
1 X8 O5 E6 K' f% a( q# E' p' Q //关闭数据库系统的套接字
0 q! r! s+ e2 g& P+ s2 v
% i- }6 j& j* V' E. Y
msqlClose($sock);
: ] u# S( a3 p% O$ t/ L, I% P
& O' k" D2 O$ g& N( D 〉
7 I; c/ f6 ^% n( A5 y9 r
; x% [, u, ^! I" c0 s* M 〈/BODY〉
# h# A" v& Q) M2 i' x1 Q4 Y
& v$ {0 q+ ~5 {$ k
〈/HTML〉
# u( F# `2 `* Q2 k) [. R5 ]. T
# a4 X* C! ~0 T6 e b9 \ 以上介绍了在
Linux下以mSQL数据库系统作为后台数据库开发应用系统的方法。有了这些基本的方法,我们就能开发出各种基于mSQL数据库的应用系统。展望与深入了解智能客户端开发
技术及企业案例分析,即将在6个城市拉开帷幕。快快来注册吧!