' w( l% s: D5 b% ^4 O( m<>例子应用程序中的代码仅仅提供了一些值得借鉴的方法。通过研究例子中的代码,你会发现一些对象的属性和方法。如果你准备创建一个高质量产品化的数据库应用程序,你应该重新设计用户界面,并且根据用户需要的方式将这些属性和方法所具有的功能提供给他们。文中余下的部分将研究怎样利用在例子中学到的技巧使用ASP来创建高质量产品化的数据库应用程序。</P>* e1 l. s5 v: Q/ ]" T
数据库连接的安全性和错误处理9 p# c* Z- v6 D: C0 A7 J$ d
<>数据库连接字符串在例子中是静态的,它在ASP文件中以硬编码的形式出现。这种方法使得任何能访问你的ASP文件的用户可以得到该数据库连接字符串的信息,一旦得到了这些信息,他们就可以访问你的数据库,这里有很大的安全隐患。所以出于对数据库安全性的考虑,你需要使用的一个存储在系统文件或者系统注册中的机器DSN或者将数据库连接字符串编译到 DLL中,这些方法可以确保数据库连接信息的安全。</P> $ n. R2 e% C* g: z<>另外,数据库连接对象在页的顶部被打开,在页的底部关闭,这个页面使用一个数据库连接,创建、打开、关闭和破坏数据库连接对象个发生一次,这样减少了系统额外的开销。</P>; O4 k' b- J u; K: p$ Z8 o
<>在页的顶部,代码中有条语句(On Error Resume Next),指示如果有错误,将自动接着从产生错误行的下一行开始执行,而没有具体的错误处理措施。你能增加错误处理,将有关错误的描述存在页面顶部的<I>sMsg</I>变量中,如果有错误发生,这个变量可以向用户显示错误信息。</P>% _5 k+ h+ g. U- K" N
<>最后的安全性考虑是没有检查用户创建的SQL语句。当用户创建新表时,他们可能在创建表的SQL语句中用括号内嵌一个与创建表无关的SQL语句。由于一些恶意的SQL能对数据库造成毁灭性的破坏,因此你应该不能让用户用这种SQL语句来访问数据库。</P>% y, L9 {) y. j+ V6 H. _8 y% D
使用ADOX处理列表中的表集合[被屏蔽广告] 5 N* W2 M5 s0 n, M8 y9 Z+ Y& P" o
<SCRIPT language=JavaScript1.1 src="http://ad.cn.doubleclick.net/adj/messagingplus.zdnet.com.cn/developer/tech;sz=1x1;ord=1893404733?">. q\" C$ r b% @) ?- h
% s6 p6 I$ B; g) j
<script>
复制代码
& a- }+ Q& z P* y1 r4 s. {5 i6 p1 [
& E( O. Z0 M$ M9 w i" P( @
) b6 N2 u+ B, T' a) I2 }7 `4 J( Y<>你可以用对象Catalog来查看数据库中的表、视图、存储过程、用户和组。在这个例子应用程序中,我们仅仅处理表集合,其实你也可以很容易的处理上面提到的别的集合。但是当处理用户和组集合时,你要很十分小心,因为你可能很有可能锁住你自己和别的用户,使得你和他们不能正常的访问数据库。</P>: T( s1 Z; J3 B: v8 ^( S
表和视图, k) T( X3 V7 g; ]4 e# E
<>如果你在列表中选择一个表并点击View按钮,你将会看到一个关于该表的精简的结构定义和其它描述,如果使用ADOX表对象,你可以很容易的访问关于表的另外几个对象,包括索引、关键字和用来访问该表所使用的数据库连接信息。</P> * t0 j4 y# f! J1 g. W/ O8 g使用 ADOX.Column显示列定义3 m$ ^+ `( x" p4 @; \% T7 O8 D# Z
<>你可以使用ADOX.Column对象很容易的检查表中列的各种属性的设置。象列的类型、名称和各种约束。通过使用ADOX.Column,你还可以得到一个列同它所在表中的其它列的关系,以及同它所在数据库中其它表的列的关系。</P>7 {8 m8 k2 I2 m* ], p4 ?. ?& G
创建一个新表. b s d. p; V8 [4 L. |! q
<>如果你选择创建表,系统将会显示一个关于创建新表的HTML表单,你在表单上可以输入要表的名称和创建列时要用到的SQL语句。你也可以修改例子中的代码,使用表单元素数组来存储列信息,然后过滤掉一些非法的列,之后就可以创建新表了。</P>! E' v0 c o8 ]
使用ADO.Connection.Execute创建新表或删除存在的表2 D( k# L5 ~- {( p
<>例子应用程序根据用户输入的信息来创建新表。有些环境出于安全性方面的考虑不允许使用ADOX来创建和删除表,或者这些环境中使用ADOX创建和删除表很复杂。考虑到这些因素,例子应用程序中的代码使用了ADO Connection对象的Execute方法来执行操纵数据库的SQL语句。</P>