VB6对任意数据库的通用操作方法
只要称得上是一个系统的软件,决对是离不开数据库的。 数据库有很多种,尤其是不同的客户,可能需要用不同的数据库, 这就得需要我们在尽量少改动代码的情况下, 实现程序对不同数据库的操作。 对于数据库的操作,大家都知道无非是连接数据库,运行SQL语句,得到结果。 那么有没有一种通用的方法,使得我们不用或很少的修改代码来实现操作不同的数据库呢? 回答是有,但也需要遵循一些规则。 我们知道,不同的数据库,尤其是大型数据库,他们的主人在国际SQL标准上增加了自己的功能, 也就是除了标准的SQL语法外,他们自己创建了一些SQL语法。 那么,我们要想程序尽可能的不动或少动,那就要把语法控制在标准语法上。 因为标准的SQL语法,任何数据库都支持。 访问数据库,对于VB6来说,最好的就是ADO。 我们把对数据库的操作封装在一个cDataBase类中,他主要有以下接口, 一边说接口一边解释。 1、ConnectionString属性,MakeConnectionString方法。 一个是直接给出连接字符串,一个是动态生成连接字符串。 至于动态生成,我可以调用ADODB控件那个属性的对话框,来实现。 2、SQLCommand属性 这个是SQL命令的,直接给一个SQL命令字符串,至于格式,我们后面详细讲。 3、Parameters属性 这是一个数组参数,对应于SQL命令里的参数。(PS:最好是二维的) 综合上面的2和3二点,讲一下。 SQL命令的写法: 如果仅仅诸如select * from Table,这个没什么好讲的。 我们实际开发中,会用到许多动态的参数值,尤其是插入新记录的时候。 很多同行喜欢有拼接的方式,比如: insert into student(id,name,password) values(1,'test','123456') 这种写法,在实际工作中,会产生一句相当难看懂的代码, 因为后面的值,全是一些变量或控件的值。 这里推荐这种写法:insert into student(id,password) values(?,?,?) 把这个字符串给我们的SQLCommand, 再定义一个二维数组,dim p(2) as string p(0)="1" p(1)="test" p(2)="123456" 这里读者要说了,你这全是字符型啊,我ID是数字啊。 补充说明一下,数字,字符,日期,都可以定义成string。 这三种类型,是所有的数据库都支持的。 我上面PS了一下,说是定义二维的,那就是说,把参数的类型也加到数组里去,这样就比较完善了。 4、下面就是二个执行SQL语句的方法,为什么是二个呢?因为VB6不支持多态。 ExecuteSQLr方法, 此方法返回一个记录集,比如:select语法。 ExecuteSQLn方法, 此方法返回一个影响的行数,比如:insert语法,delete语法。 这二个方法,先要判断一下前面的属性有没有赋值。 接着,我们用ADO的Command对象来操作。 '返回受影响的记录数,Update/Delete/Insert '写错误日志 这个是我实际使用的函数,起个抛砖引玉的作用。 使用文中所说的方法,对于一般的MIS的系统,足够应付了。 如果你说你的系统需要存储过程啊,触发器啊什么的, 我个人的观点是: 如果想程序通用任何数据库, 那么, 数据库只能作为一个数据载体, 不能依赖数据库本身过多的功能。 否则, 别说程序移植,光数据库里的存储过程,函数什么的,都会改死你。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |