Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写函数以创建存储过程参数时的SQL数据类型函数参数_Sql_Asp.net_Vb.net_Ado.net - Fatal编程技术网

编写函数以创建存储过程参数时的SQL数据类型函数参数

编写函数以创建存储过程参数时的SQL数据类型函数参数,sql,asp.net,vb.net,ado.net,Sql,Asp.net,Vb.net,Ado.net,我目前正在编写一个函数,它将使以编程方式向存储过程添加参数变得更容易,但到目前为止,我遇到的唯一障碍是将数据类型作为函数参数添加进来。代码是: Public Shared Function spParamAdd(cmd As SqlCommand, paramName As String, dataType As SqlDbType, value As String) Dim command = cmd.Parameters.Add(paramName, SqlDbType.dataTy

我目前正在编写一个函数,它将使以编程方式向存储过程添加参数变得更容易,但到目前为止,我遇到的唯一障碍是将数据类型作为函数参数添加进来。代码是:

Public Shared Function spParamAdd(cmd As SqlCommand, paramName As String, dataType As SqlDbType, value As String)
    Dim command = cmd.Parameters.Add(paramName, SqlDbType.dataType).Value = value
    Return command
End Function
我试图从中得到的代码是:

cmd.Parameters.Add("@USERID", SqlDbType.Int).Value = 1
最后,我得到的错误是:

dataType不是System.Data.SqlDbType的成员


欢迎任何建议。

很抱歉花了一些时间,这里有一个很好的解决方案此代码经过尝试和测试 如果您正在寻找添加参数的方法,这将很容易地将参数添加到命令对象中

向命令对象添加参数的方法

正如您在下面看到的,我们只需要command对象(ByRef),这样我们就可以直接使用它、参数名称本身、数据类型以及最后的值。还有一个选择案例,因为我们需要确切地知道我们正在处理的数据类型,以便我们可以将值转换为正确的类型

 Public Shared Sub spParamAdd(ByRef cmd As SqlCommand, ByVal paramName As String, ByVal dataType As SqlDbType, ByVal value As Object)
    'Need to make sure we have the correct datatype, add more as needed!
    Select Case dataType
        Case SqlDbType.VarChar
            cmd.Parameters.AddWithValue(paramName, CStr(value)).DbType = dataType
        Case SqlDbType.Int
            cmd.Parameters.AddWithValue(paramName, CInt(value)).DbType = dataType
    End Select

End Sub
示例用法

 Dim cmd As New SqlCommand
 spParamAdd(cmd, "@Customer_ID", SqlDbType.Int, 12)
 spParamAdd(cmd, "@Last_Name", SqlDbType.VarChar, "Dickins")
另一个示例-并非真正建议的… 您也可以省略select case,但最好确保您发送的值和数据类型相同

 Public Shared Sub spParamAdd(ByRef cmd As SqlCommand, ByVal paramName As String, ByVal dataType As SqlDbType, ByVal value As Object)
    cmd.Parameters.AddWithValue(paramName, value).DbType = dataType
End Sub
让我知道这对你有什么好处


快乐编码

您使用的sqldatatype错误…正确的使用方法是什么?您可能可以尝试。添加(paramName,dataType),因为您正在通过函数传递它。请稍等,我给您提供解决方案…请查看我为您提供的答案。很容易将参数添加到命令中。