第七讲 VB访问SQL Server2000数据库的方法(5)

2019-09-01 19:41

Dim cmd as ADODB.Command Dim rst as ADODB.Recordset Dim param as ADODB.Parameter Set cn=New ADODB.Connection

cn.Open “driver={SQL Server};server=www.ndlxn.com;uid=ndlxn;pwd=848484; database=pubs”

Set cmd=New ADODB.Command cmd.ActiveConnection=cn

cmd.CommandText=”mystoredinsqlserver” 存储过程的名称。 cmd.CommandType=adCmdStoredProc

Set param=cmd.CreateParameter(“par1”,adBoolean,adParamReturnValue) cmd.Parameters.Append param

Set param=cmd.CreateParameter(“par2”,adInteger,adParaminput,,Val (text1.text))

cmd.Parameters.Append param 下面只用一行也可以达到同样的添加参数目的。 cmd.Parameters.Append cmd.CreateParamter(“par3”,adInteger,adParamOutput) Set rst=cmd.Execute Msgbox rst(0).Value Msgbox cmd(“par1”) Msgbox cmd(“par3”)

这里,三个参数中,par1是一个返回值,par3是一个输出参数,可以在程序中显示出来。

参数查询例如我们想让程序运行时,由用户自己来输入commandtext命令的where参数值,建立1个Parameter对象,用如下的方式来创建和使用参数:

cmd.CommandText=\其中的两个问号未直接给出值,相当于两个“变量”,要用Parameter参数对象。 Dim Par as ADODB.Parameter Dim Par1 as ADODB.Parameter Set Par =New ADODB.Parameter Par.Name= “myid” Par.Type=adInteger par.size=5

par.value=98001 ?只要赋予变量即实现用户控制,如par.value=cint(text1.text) par.Direction=adParamInput cmd.Parameters.Append par Set Par1=New ADODB.Parameter par1.name= ”my” par1.type=adinteger par1.size=5 par1.value=98008

par1.Direction=adParamInput cmd.Parameters.Append par1 cmd.Execute

这段代码是查询students表中98001—98008之间的所有记录,在command对象cmd的变量集中的变量par,par1会自动依次代入两个?号。在实际使用中,如果不知参数的类型,可设type为adVariant(变体),参数的name,size和direction是可选属性,可用缺省值。再举1例: Private Sub Command2_Click()

cmd.CommandText = \姓名 like ?\

Set par = cmd.CreateParameter (\?Set par = New ADODB.Parameter 上面这一句顶这么多! ?par.Name = \?par.Size = 6 ?par.Type = adVariant ?par.Value = Text1.Text ?par.Direction = adParamInput cmd.Parameters.Append par Set lxn = New ADODB.Recordset Set lxn = cmd.Execute() End Sub

★Cancel方法:取消一个未执行的,异步的Execute或Open方法的调用。前面讲过。 ------------------------------ Recordset对象补充

★ CursorLocation属性:指定记录集的光标位置,有adUseServer和adUseClient两种。如果在connection对象连接前未指定游标,则必须在此设置。 ★ CursorType属性:光标类型。

★ UpdateBatch方法:同时保存多条被更改的记录。 ★ Open方法:建立1个记录集,格式:

Recordset.Open Source,Activeconnection,Cursortype,Locktype,Options

其中,Source即RecordSource参数可以是1个查询、存储过程名或表名等;或者1个Command对象变量名(此时要省略ActiveConnection参数,即为空),ActiveConnection参数指明该记录集基于哪个Connection连接对象,这个连接对象必须是已建立的连接,当没有Connection对象时,该参数就直接指定一个ConnectionString连接串;Cursortype指明游标类型,Locktype指明记录锁定方式(记录集是否可修改/只读),Options是说Source参数中内容的类型,如表,存储过程等,与Command对象的Commandtype类似。 例如:

rst.Open \

使用Open方法,不要事先建立Connection和Command对象,也可打开数据源——其实,它们三个对象本来就是平行的嘛,如: Dim rst As New ADODB.Recordset Private Sub Form_Load()

Const cnStr = \Info=False;Data Source=C:\\工商所收费系统\\MyDatabase.mdb\

rst.Open \End Sub

只要这么几句,就打开一个记录集了。

★ Save方法:将记录集存为1个文件。本方法不会关闭记录集。格式: recordset对象变量.Save 路径和文件名

该方法在记录集建立后才能使用。在第1次使用该方法存储记录集后,如果需要往同一文件存储同样的记录集,要省略文件名。 我在使用ADO对象时遇到1难题:竟没用来!我在声明段和Form_load事件中声明了对象变量,也设置了connectionstring,open属性,也给记录集对象赋予了Execute方法得到的记录,可是,记录集对象不可用,如:(红色代码为修改后的正确写法。) Dim cn As ADODB.Connection Dim cmd As ADODB.Command Dim rst As ADODB.Recordset rivate Sub Form_Load()

Set cn = New ADODB.Connection

cn.ConnectionString = \cn.CursorLocation=adUseClient cn.Open

Set cmd = New ADODB.Command Set cmd.ActiveConnection = cn

cmd.CommandText = \Set rst = New ADODB.Recordset

? Set rst = cmd.Execute() ?缺省情况下,记录集为只读,如果要修改记录,需要设定记录集的LockType属性,或在记录集对象的OPEN方法中一并设置。 rst.Open \

(注:第1个参数”sub1”也可采用1个command对象名,但那样的话要省略后面cn,如下: rst.Open cmd, , adOpenDynamic, adLockOptimistic) Label2.Caption = \本过程共\步。\rst . addnew rst(0) = \搞试验\rst(1) = \我的实验\

rst.Update ?这句不能丢!设为adLockOptimistic对记录的修改不会自动进行保存!!!! End Sub

执行到label2.caption=…rst.RecordCount…和rst . addnew时就出错了,好象根本就 没有rst似的。

为什么?缺省情况下,ADO对象中connection对象是无游标的,必须在open之前设置好其 CursorLocation属性(也可以设置Recordset对象的CursorLocation属性),而用

connection或command对象赋予的记录集是只读的,不能Addnew,要全面操作数据库必须 用记录集的Open方法。


第七讲 VB访问SQL Server2000数据库的方法(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:规范检验室操作确保饲料检验质量

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: