我们把对数据库的 *** 作封装在一个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,name,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
Public Function ExecuteSQLn() As Long
On Error GoTo errTrap
Dim MyCon As New Connection'连接对象
Dim MyCMD As New Command 'cmd对象
MyCon.ConnectionString = DataBaseConnectionString '连接字符串
MyCon.CursorLocation = adUseClient '游标
MyCon.Open '打开连接
MyCMD.ActiveConnection = MyCon 'CMD对象的当前连接
MyCMD.CommandType = adCmdText 'CMD对象的命令类型
MyCMD.CommandText = SQLString 'CMD对象的具体命令
MyCMD.CommandTimeout = 15 'CMD对象的超时时间
If Len(XMLParameters) = 0 Then '判断是否有参数(我这里的参数不是数组,是XML字符串)
'无参数
Else
Dim p() As String, i As Long
If MyXML.XMLString2StringArray(XMLParameters, p) Then 'XML字符串转换为数组
For i = LBound(p) To UBound(p)
MyCMD.Parameters(i) = p(i) '给SQL命令中的?赋值,
Next
End If
End If
Dim N As Long
MyCMD.Execute N '执行
ExecuteSQLn = N '返回影响的行数
errExit:
Set MyCMD = Nothing '释放
MyCon.Close '关闭连接
Set MyCon = Nothing '释放
XMLParameters = "" '清空参数
SQLString = "" '清空命令
Exit Function
errTrap:
ExecuteSQLn = 0
'写错误日志
WriteLog "文件:cADO" &vbCrLf &_
"过程:ExceuteSQLn()" &vbCrLf &_
"错误号:" &Err.Number &vbCrLf &_
"错误描述:" &Err.Description
Err.Clear
Resume errExit
End Function
1、使用data控件的FindFirst方法可以实现数据库记录的查找。
2、工具:vb6。
3、具体实现方法:
a)在窗体上添加data1、dbgrid1、text1、command1、label1
b)在dbgrid1的DataSource属性里选择data1
c)实现代码如下:
Private Sub Command1_Click()'查找定位记录
Data1.Recordset.FindFirst "CategoryID=" & Text1.Text
DBGrid1.DataSource
End Sub
Private Sub Form_Load()
Data1.Connect = "Access 2000" '设置数据库类型
Data1.DatabaseName = "C:\db1.MDB" '连接数据库
Data1.RecordSource = "Categories" '数据库中的表
Data1.Refresh '打开数据库
End Sub
4、注意:数据库可以使用vb6文件夹内的NWIND.MDB
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)