【发布时间】:2015-06-17 19:20:28
【问题描述】:
我不知道该相信什么了。当我们在存储过程之外运行我们的 VB.NET SqlCommand 时,我们是否在命令中添加 EXEC?!
我得到一个错误:
找不到存储过程“EXEC uspGrabAutoByYMM”。
但是其他人告诉我你必须把 EXEC 放在那里才能运行。
这是我的示例代码:
Public Sub BindGridAutosYMM()
Dim constring As String = "server=classified;database=classified"
Using con As New SqlConnection(constring)
Using cmd As New SqlCommand("EXEC uspGrabAutoByYMM", con)
cmd.Parameters.Add("@Year", SqlDbType.VarChar).Value = TextBox1.Text
cmd.Parameters.Add("@Make", SqlDbType.VarChar).Value = TextBox2.Text
cmd.Parameters.Add("@Model", SqlDbType.VarChar).Value = TextBox3.Text
cmd.CommandType = CommandType.StoredProcedure
Using sda As New SqlDataAdapter(cmd)
Using dt As New DataTable()
sda.Fill(dt)
DataGridView1.DataSource = dt
End Using
End Using
End Using
End Using
End Sub
【问题讨论】:
-
不,在这种情况下不需要添加EXEC
-
如果添加的时候报错,而省略的时候没有报错,那么听起来你就有答案了。当您可以演示代码时,“其他人”告诉您的内容并没有多大区别。
-
大卫。我绝对明白你的意思。我绝对明白你的意思。哈哈。当我告诉人们我用 @ 符号在 VB 中编写我的 SQL 代码并且人们告诉我将它存储在 SQL SSMS 中时,我的理念是一样的吗?就像它没有区别! :D
-
也许这些人不了解您尝试执行程序的上下文。在这种情况下,您已经向
SqlCommand提示它是一个存储过程,因此它可以自己处理EXEC部分。 -
@Cᴏʀʏ,在这种情况下,我必须添加它。事先,我会运行程序,它会说“我们找不到参数@Year,所以程序已经中止”,......,那条线的缺失会是原因吗?跨度>
标签: sql-server vb.net stored-procedures