智能安防系统的作用:SQL Server的问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/04 13:37:58
各位朋友好,小弟在学习中遇到了一个问题,即通过VB访问数据库时不能正确返回值。在VB中定义了一个按钮,和三个文本框,Text1和Text2用于输入,Text3用于输出,数据库为test1,表为table1,其中有sno char(8),age int(4),sname char(8)三列,书上用的存储过程无法找到,所以自己写了一个, 名字为"aaaa",但就是不对,请赐教,谢谢
存储过程:
CREATE PROCEDURE aaaa
(@vsno char(8),
@vage int,
@vsname char(8) output
)
as
select @vsname=sname from table1
where sno=@vsno and age=@vage
return @vname
GO

程序文件:
Private Sub Command1_Click()
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim par1 As ADODB.Parameter
Dim par2 As ADODB.Parameter
Dim par3 As ADODB.Parameter
Set conn = New ADODB.Connection
conn.ConnectionString = "provider=msdasql;driver={sql server};server=lijingbin;uid=sa;pwd=;database=test1"
conn.Open
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "aaaa"
Set par1 = New ADODB.Parameter
par1.Direction = adParamInput
par1.Type = adChar
par1.Size = 8
par1.Value = Val(Text1.Text)
cmd.Parameters.Append par1
Set par2 = New ADODB.Parameter
par2.Direction = adParamInput
par2.Type = adInteger
par2.Size = 4
par2.Value = Val(Text2.Text)
cmd.Parameters.Append par2
Set par3 = New ADODB.Parameter
par3.Direction = adParamOutput
par3.Type = adChar
par3.Size = 8
cmd.Parameters.Append par3
cmd.Execute
If IsNull(par3.Value) Then
MsgBox "data is not in", vbOKOnly, "message"
Else
Text3.Text = par3.Value
End If
conn.Close
End Sub

改一下存储过程:

CREATE PROCEDURE aaaa
@vsno char(8),
@vage int,
@vsname char(8) output

as
select @vsname =(select sname from table1
where sno=@vsno and age=@vage )
GO