VB教程

源代码在线查看: ba50.htm

软件大小: 170 K
上传用户: rentianchou
关键词: VB教程
下载地址: 免注册下载 普通下载 VIP

相关代码

				
				
				VB中调用带参数存储过程的实现
				 
				
				 
				
				
				
				
				  
				  
				     
				      
				      
				          
				             
				             
				               
				                 
				    
				
				   
				   
				       
				        				      class=table width=755>
				          
				             
				               
				               
				                 VB中调用带参数存储过程的实现 
				                  ---
				              
				            
				             
				              				            width="100%" class="unnamed1" height="124"> 
				                
				                  
				                    
				                   VB做为快速应用开发(RAD)工具越来越得到开发人员的认可和接受。它对许多API(如ODBC 
				                    API、SOCKET API等等)的封装使得编程变得简单起来。同时,它支持集成开发环境下的可视化、事件驱动、面向对象等编程特点。下面,我们谈谈在VB中调用存储过程的实现方法及其注意事项。 
				                    
				                  ---- 
				                    我们知道,VB的数据库编程有许多种方法,比如直接用ODBC API编程,这种方法灵活、高效,程序员可以实现对数据库复杂的控制;也可以用VB中的数据对象,如RDO(远程数据对象)、DAO(数据访问对象)、ADO(ActiveX 
				                    数据对象),这种方法实现起来方便、快捷,但灵活性较差一些。由于存储过程在实现数据封装、隐藏以及代码的预编译、减少网络负载、维护方便等优点,所以被许多RDBMS和编程工具做支持。VB中的各类数据对象也提供对存储过程的支持。 
				                    
				                  ---- 
				                    我们以ADO为例来说明其实现的步骤 
				                  ---- 
				                    1. 创建、调试存储过程。你可以在数据库中也可以在其他外挂程序的支持下进行存储过程的创建和调试工作。本例中的存储过程代码如下(使用PUBS的MS 
				                    SQL中的例子库 ): 
				                  CREATE PROCEDURE myprocedure
				                    @job_id smallint,
				                    @job_lvl tinyint
				                    AS
				                    SELECT *
				                    FROM employee
				                    WHERE job_id < @job_id 
				                    AND job_lvl > @job_lvl
				                    
				                  ---- 
				                    2. 在VB中生成一个新的工程,工程有一窗体,一个COMMAND(NAME:COMMAND1) 按钮,一个 MSFlexGrid(NAME:MSFlexGrid1)控件。 
				                    
				                  ---- 
				                    3. 创建连接ADO connection; 
				                  ---- 
				                    4. 创建命令ADO command; 
				                  ---- 
				                    5. 创建参数并设置各个参数的属性; 
				                  ---- 
				                    6. 执行ADO command; 
				                  ---- 
				                    7. 对数据进行处理;MSFlexGrid显示查询到的数据 
				                  ---- 
				                    8. 释放连接,退出程序。 
				                  ---- 
				                    其中代码如下: 
				                  在窗体中声明以下变量:
				                    Dim cnn1 As ADODB.Connection  ‘连接
				                    Dim mycommand As ADODB.Command ‘命令
				                    Dim parm_jobid As ADODB.Parameter ‘参数1
				                    Dim parm_joblvl As ADODB.Parameter ‘参数2
				                    Dim rstByQuery As ADODB.Recordset ‘结果集
				                    Dim strCnn As String  ‘连接字符串
				                    
				                    在窗体的LOAD事件中加入如下代码:
				                    Set cnn1 = New ADODB.Connection  
				                    ‘生成一个连接
				                    strCnn = "DSN=MYDSN;uid=sa;pwd="
				                    ‘创建的系统数据源MYDSN指向PUBS数据库
				                    cnn1.Open strCnn  ‘打开连接
				                    在窗体的UNLOAD中的加入代码如下:
				                    cnn1.Close        ‘关闭连接
				                    Set cnn1 = Nothing ‘释放连接
				                    
				                    在按钮中的代码如下:
				                       Dim i As integer
				                       Dim j as integer  
				                    Set parm_jobid = New ADODB.Parameter
				                    Set mycommand = New ADODB.Command
				                    ' parm_jobid.Name = "name1" 
				                     this line can be ommited
				                    parm_jobid.Type = adInteger ‘参数类型
				                    parm_jobid.Size = 3        
				                    ‘参数长度 
				                    parm_jobid.Direction = adParamInput 
				                    ‘参数方向,输入或输出
				                    parm_jobid.value = 100      ‘参数的值
				                    mycommand.Parameters.Append 
				                    parm_jobid  ‘加入参数
				                      
				                    
				                    Set parm_joblvl = New ADODB.Parameter
				                    ‘parm_joblvl.Name = "name2"
				                    parm_joblvl.Type = adInteger
				                    parm_joblvl.Size = 3
				                    parm_joblvl.Direction = adParamInput
				                    mycommand.value = 100
				                    mycommand.Parameters.Append parm_joblvl
				                    
				                    
				                    mycommand.ActiveConnection = cnn1   
				                    ‘指定该command 的当前活动连接
				                    mycommand.CommandText = " myprocedure " 
				                     ‘myprocedure 是你要调用的存储过程名称
				                    mycommand.CommandType = adCmdStoredProc  
				                     ‘表明command 为存储过程
				                    Set rstByQuery = New ADODB.Recordset 
				                    Set rstByQuery = mycommand.Execute()
				                    i = 0
				                    Do While Not rstByQuery.EOF
				                    i = i + 1    ‘  i 中保存记录个数
				                    rstByQuery.MoveNext
				                    Loop
				                    MSFlexGrid1.Rows = i + 1  
				                    ‘动态设置MSFlexGrid的行和列
				                    MSFlexGrid1.Cols = rstByQuery.Fields.Count + 1
				                    MSFlexGrid1.Row = 0
				                    For i = 0 To rstByQuery.Fields.Count - 1
				                    MSFlexGrid1.Col = i + 1
				                    MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name
				                    Next   ‘设置第一行的标题,用域名填充
				                    
				                    i = 0
				                    Set rstByQuery = mycommand.Execute()
				                    Do While Not rstByQuery.EOF
				                      i = i + 1
				                      MSFlexGrid1.Row = i  ‘确定行
				                      For j = 0 To rstByQuery.Fields.Count - 1
				                      MSFlexGrid1.Col = j + 1
				                      MSFlexGrid1.Text = rstByQuery (j) 
				                    ‘添充所有的列
				                      Next
				                    rstByQuery.MoveNext   
				                    
				                    Loop  ‘这个循环用来填充MSFlexGrid的内容
				                    
				                    
				                  ---- 特殊说明 
				                    
				                  ---- 
				                    1. Set recordset = command.Execute( RecordsAffected, Parameters, 
				                    Options ) command.Execute RecordsAffected, Parameters, Options 
				                    这是command的两种用法,一种有返回结果集,一种没有返回结果集。 
				                  ---- 
				                    RecordsAffected:是指用update、delete操作时所影响的结果,对select的查询,其值为-1;这和在Ms 
				                    sql server 中的Query Analyzer中的不一样。Query Analyzer中,select、update、delete的结果显示的是实际查、改、删的记录数。 
				                    
				                  ---- 
				                    Options:指明command的类型,有adCmdText、adCmdTable、adCmdStoredProc等等,用户可见MSDN。 
				                    
				                  ---- 
				                    2.在参数的类型中,用户可以用varchar来代替integer,系统会帮你自动实施转化; 
				                  ---- 
				                    3.本例中仅为带输入参数的存储过程,如果要有输出参数,根据MSDN的材料,用ADO不行。你可以用RDO数据对象,MSDN中有一个例子,此处不做过多赘述; 
				                    
				                  ---- 
				                    4.可以不用ADO COMMAND对象,也可直接调用ADO CONNECTION的execute方法,结果很类似。 
				                    转载自中国程序员网站 (文/张永晓) 
				                
				              
				            
				          
				           
				             
				              (上一页)---(下一页)
				            
				          
				           
				             
				               
				    
				      
				  
				  
				
				
				
				
							

相关资源