我一直在搜索互联网的深处,我发现的所有解决方案都没有解决这个问题。
我正在使用 Visual Web Developer 2010 Express 和 SQL Server 2008,使用 VB。
我正在尝试执行一个存储过程以将一些来自文本框控件的数据插入到数据库中,如果 id 不存在,它会插入文本框中给出的 id 和当前日期(time_scanned_in),如果 id 已经存在,它将在[time_scanned_out]
列中插入当前日期时间,如果数据库中的所有3个字段都已满,它将返回@message = 1
。
这是sql存储过程:
ALTER PROCEDURE dbo.InsertDateTime
@barcode_id nchar(20),
@message char(1) = 0 Output
AS
BEGIN
if not exists(select * from tblWork where barcode_id = @barcode_id)
begin
INSERT INTO [tblWork] ([barcode_id], [time_scanned]) VALUES (@barcode_id, GetDate())
end
else if exists(select * from tblWork where barcode_id = @barcode_id AND time_scanned_out IS NOT NULL )
begin
SET @message=1
end
else if exists(select * from tblWork where barcode_id = @barcode_id AND time_scanned_out IS NULL)
begin
UPDATE [tblWork] SET [time_scanned_out] = GetDate() WHERE [barcode_id] = @barcode_id
end
RETURN @message
end
如果我执行此操作(通过右键单击 SP),它会完美运行并在所有字段都已填写时返回值。
但是通过vb代码执行时,找不到这样的程序,给出标题中的错误。
这是vb代码:
Dim opconn As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
Dim sqlConnection1 As New SqlConnection(opconn)
Dim cmd As New SqlCommand
Dim returnValue As Object
cmd.CommandText = "InsertDateTime"
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = sqlConnection1
sqlConnection1.Open()
With cmd.Parameters.Add(New SqlParameter("@barcode_id", TextBox.Text))
End With
With cmd.Parameters.Add(New SqlParameter("@message", SqlDbType.Char, 1, Label3.Text))
End With
returnValue = cmd.ExecuteScalar()
sqlConnection1.Close()
请注意,我还没有完成返回部分的代码,一旦我得到它来定位 SP 就会这样做。
尝试在 gridview 中列出每个数据库的 sys.objects.name 的所有对象,它列出了除我想要的存储过程之外的所有内容。
这是为什么,有什么想法吗?将不胜感激,花了几个小时试图找到一个解决方案。如果有人需要更多代码或信息,请随时询问。