注册 登录
编程论坛 VB.NET论坛

SqlParameter 问题

yuk_yu 发布于 2016-12-14 16:25, 4062 次点击
我想学习一下关于SqlParameter 执行SQL,但下面不知到出错在哪。望大家指点
程序代码:
Public Class SQLHelper
Public Function ExecuteDataTableSP(ByVal strSQLSP As String, ByVal params() As SqlParameter) As DataTable
        Dim oconn As SqlConnection = GetConnection()
        Dim command As New SqlCommand(strSQLSP, oconn)
        command.CommandType = CommandType.text'为何StoredProcedure不能执行?改为text就完全没问题了
        Dim dt As New DataTable
        Dim da As New SqlDataAdapter(command)
        For i As Integer = 0 To params.Length - 1
            da.SelectCommand.Parameters.Add(params(i))
        Next
        da.Fill(dt)
        da.Dispose()
        oconn.Close()
        oconn.Dispose()
        command.Dispose()
        Return dt
    End Function
End Class

sub ExecuteSql()

Dim SqlCmd As SQLHelper = New SQLHelper
        Dim paras As SqlParameter() = {New SqlParameter("@Model_Name", CStr(TextBox1.Text)),
                                       New SqlParameter("@Part_Name", CStr(TextBox2.Text)),
                                       New SqlParameter("@BuildStep", CStr(TextBox3.Text)),
                                       New SqlParameter("@Per_Use", CInt(TextBox4.Text))}

        Dim StrSql As String = "Select * from KanBanBom where Model_Name = @Model_Name and Part_Name = @Part_Name and BuildStep = @BuildStep"
        Dim myTab As DataTable = SqlCmd.ExecuteDataTableSP(StrSql, paras)
        If myTab.Rows.Count > 0 Then MsgBox("Check your data again", MsgBoxStyle.Information) : Exit Sub
end sub
'不知怎么老出错



[此贴子已经被作者于2016-12-14 16:29编辑过]

4 回复
#2
不说也罢2016-12-16 18:43
我记得你提出过类似的问题。
楼主的代码虽然没有语法上的问题,但并不是调用存储过程。
指定 = CommandType.StoredProcedure时,必须同时指定command的CommandText(内置或用户定义的存储过程名称)
楼主的代码实际上并未调用服务器端的存储过程,只是传递了一个查询命令,与"Select * from KanBanBom"传递到服务器没有本质区别。
至于你最后提到不知怎么老出错,估计与传递的参数的类型、长度、大小有关。
#3
yuk_yu2016-12-20 11:45
回复 2楼 不说也罢
谢谢版主解释,我也一直在研究SQL的参数调用,想把一些调用写在数据库而不是在程序中,再次感谢!
#4
不说也罢2016-12-21 15:22
楼主可以参考下这个博客,http://blog.

我的操作数据库的类,都自己设计编写。调用存储过程,能大幅提高数据集返回到客户端的效率。不过,如果你不是为了B/S或C/S程序而设计,则可忽略之。
#5
yuk_yu2016-12-28 17:03
回复 4楼 不说也罢
谢谢分享,有时自己懒,就直接用别人写好的。
1