<>我们可以用很多方法为数据库构造前端,例如Access和HTML。其中有一种方法是利用微软以前的ASP技术,包括ADO/ADOX来构造数据库前端。 </P>" ?' N1 D1 k5 C5 H
<>我将解释如何利用ASP来一个数据库构造前端,为了具体的表达我的思想,我提供了一个带有代码的例子。这个例子实现了一个不是很完善的应用程序,该应用程序可以为数据库增加和删除表,以及查看表结构定义。你可以扩展例子代码来创建一个功能更强的数据库管理应用程序。现在让我们来深入研究这个例子应用程序。</P>6 l9 Y7 P3 s' v- c8 Y" h
例子应用程序' Q' m, D- ^2 D! c l
<>例子应用程序的源代码包含在单个文件(dbfe.asp)中。如果你想亲自测试该应用程序,你需要用一个Access数据库文件来替代使用通用命名标准(UNC)命名的文件,同时你必须对测试的数据库有所有的权限控制。另外一种方法是你可以改变整个连接字符串,使应用程序连接到你选择的数据库。</P> / y8 o3 k& w7 B( _9 }4 d" G<>我使用了一个DSN-less ODBC的连接,这种创建连接的方式是将所有有关数据库连接的信息放在一个字符串中,并在连接字符串中用DRIVER=代替PROVIDER=。如果你的Web服务器能支持ADO和ADOX,当你第一次在Web服务器中装载那个页面时,你将会看到一个包含表名的列表,这个列表包括了当前数据库所有表的名称,甚至还包括了该数据库的系统表的名称。在这个列表的下面有三个按钮,按钮View用来查看选中的表结构定义,按钮Drop用来删除选中的表,按钮Create用来创建一个新表。(图<B>A</B>是例子界面)</P> C" @, V3 [ F3 b( T3 C6 r
图A</P>3 P# m* _% Z+ P, s8 ]' d
</P>* `( @8 f! k( l* W
例子界面</P> ) x$ K' d7 n l$ K- e& }, L! H0 p+ s/ m例子代码# C1 L% ~! W1 w$ z3 e
<>如果你查看例子页面的代码,你将会看到一个结构组织得很好的ASP应用程序,例子代码使用了如下的措施:</P> & {( h( D- x4 V6 G* f$ n对象变量通过使用<I>Server.CreateObject()</I>来进行定义。表单发送后,如果有<I>QueryString</I>值,这些值将被赋值到本地变量。 # u$ H: ^' R+ U/ F7 S6 T
依据<I>QueryString</I>中用户要求的动作值来进行代码分支。发送给用户的消息被赋值到<I> sMsg</I>变量,用户要求的动作(查看、删除和增加)的处理结果被赋值到<I> sView</I>变量。 # R) i4 b- Q4 E6 x图形用户界面(GUI)的功能定义为:<I>fnShowTables,fnShowTable,</I>and <I>fnShowCreateTable</I>. : {2 `, _& l) @2 `
变量<I>sView</I>和 <I>sMsg中有内联的</I>HTML,用来帮助显示用户界面。 7 h6 Y- \. j( \& b6 W, n* B' P% U" n/ I) _% U
<>下载例子应用程序8 Y. v) {9 n) f9 `! A) z
点击这里 来下载该文中的例子。 </P> 2 ]$ M6 @ R& m0 b' z2 |( \* y完善例子应用程序的一些措施[被屏蔽广告] ) \ W5 p9 u4 W7 t" t5 W
<SCRIPT language=JavaScript1.1 src="http://ad.cn.doubleclick.net/adj/messagingplus.zdnet.com.cn/developer/tech;sz=1x1;ord=382011218?"> \" M2 I, `4 w, d& b
8 ^( [3 I* K8 B# C. D' t
<script>
复制代码
- _, o2 z$ n5 Y- N+ b- M 2 n# q0 s1 t5 r! f& n8 P7 u2 ? * @% {8 N* A8 [' P<>例子应用程序中的代码仅仅提供了一些值得借鉴的方法。通过研究例子中的代码,你会发现一些对象的属性和方法。如果你准备创建一个高质量产品化的数据库应用程序,你应该重新设计用户界面,并且根据用户需要的方式将这些属性和方法所具有的功能提供给他们。文中余下的部分将研究怎样利用在例子中学到的技巧使用ASP来创建高质量产品化的数据库应用程序。</P> ) M9 \4 Q+ ^3 b) A* z: l数据库连接的安全性和错误处理 - b0 U* _- p2 `! f# x/ z. }<>数据库连接字符串在例子中是静态的,它在ASP文件中以硬编码的形式出现。这种方法使得任何能访问你的ASP文件的用户可以得到该数据库连接字符串的信息,一旦得到了这些信息,他们就可以访问你的数据库,这里有很大的安全隐患。所以出于对数据库安全性的考虑,你需要使用的一个存储在系统文件或者系统注册中的机器DSN或者将数据库连接字符串编译到 DLL中,这些方法可以确保数据库连接信息的安全。</P>9 i6 Z: D2 }) h2 A" @) Y
<>另外,数据库连接对象在页的顶部被打开,在页的底部关闭,这个页面使用一个数据库连接,创建、打开、关闭和破坏数据库连接对象个发生一次,这样减少了系统额外的开销。</P>" i D9 G/ n# |" j$ O6 H
<>在页的顶部,代码中有条语句(On Error Resume Next),指示如果有错误,将自动接着从产生错误行的下一行开始执行,而没有具体的错误处理措施。你能增加错误处理,将有关错误的描述存在页面顶部的<I>sMsg</I>变量中,如果有错误发生,这个变量可以向用户显示错误信息。</P>6 B. j3 `4 | Z! l5 i/ ^2 b
<>最后的安全性考虑是没有检查用户创建的SQL语句。当用户创建新表时,他们可能在创建表的SQL语句中用括号内嵌一个与创建表无关的SQL语句。由于一些恶意的SQL能对数据库造成毁灭性的破坏,因此你应该不能让用户用这种SQL语句来访问数据库。</P> 1 u5 e9 a, k* i+ Q; {) j使用ADOX处理列表中的表集合[被屏蔽广告]5 I7 `$ T& Y' O1 e% \4 z/ Q/ h) |3 G# W
<SCRIPT language=JavaScript1.1 src="http://ad.cn.doubleclick.net/adj/messagingplus.zdnet.com.cn/developer/tech;sz=1x1;ord=1893404733?">/ B& w+ i1 u( g- y( T. v* c