Vb.net SqlParameterCollection仅接受非null SqlParameter类型对象,而不接受布尔对象

Vb.net SqlParameterCollection仅接受非null SqlParameter类型对象,而不接受布尔对象,vb.net,stored-procedures,Vb.net,Stored Procedures,我正在调用一个存储过程“CategoryListShow”。存储过程有两个参数,一个是ID,它是输入参数,而CategoryResult是输出参数。我试图在这个文本框txtCategory.Text上显示输出参数的值 错误:黄色屏幕显示此错误 SqlParameterCollection仅接受非空SqlParameter类型对象,而不接受布尔对象 请引导我 错误1: 您正在尝试将新SqlParameter(…).Direction=ParameterDirection.Input的结果添加到cm

我正在调用一个存储过程“CategoryListShow”。存储过程有两个参数,一个是ID,它是输入参数,而CategoryResult是输出参数。我试图在这个文本框txtCategory.Text上显示输出参数的值

错误:黄色屏幕显示此错误

SqlParameterCollection仅接受非空SqlParameter类型对象,而不接受布尔对象

请引导我

错误1: 您正在尝试将
新SqlParameter(…).Direction=ParameterDirection.Input的结果添加到
cmd.Parameters
,该结果具有布尔值(它是一个比较值)

必须首先初始化参数,然后将其添加到集合中:

错误2: 您正在添加
@ID
两次

错误3: 由于
@ID
声明为
Int
,因此它的值应为Int=>convert
CategoryIdTxt.Text
类型,然后再将其分配给参数


您可以按如下方式修复这些问题:

cmd.Parameters.Add(New SqlParameter("@ID", SqlDbType.Int)
                              .Direction = ParameterDirection.Input)
错误1: 您正在尝试将
新SqlParameter(…).Direction=ParameterDirection.Input的结果添加到
cmd.Parameters
,该结果具有布尔值(它是一个比较值)

必须首先初始化参数,然后将其添加到集合中:

错误2: 您正在添加
@ID
两次

错误3: 由于
@ID
声明为
Int
,因此它的值应为Int=>convert
CategoryIdTxt.Text
类型,然后再将其分配给参数


您可以按如下方式修复这些问题:

cmd.Parameters.Add(New SqlParameter("@ID", SqlDbType.Int)
                              .Direction = ParameterDirection.Input)

在设置@ID值的行中,将其更改为此

''' @ID '''
Dim param As SqlParameter = New SqlParameter("@ID", SqlDbType.Int, 4)
param.Direction = ParameterDirection.Input
param.Value = Int32.Parse(CategoryIdTxt.Text);
cmd.Parameters.Add(param);

''' @CategoryResult '''
param = New SqlParameter("@CategoryResult", SqlDbType.VarChar, 50)
param.Direction = ParameterDirection.Output
cmd.Parameters.Add(param);
您无需再次申报。只需设置它的值。我发现处理参数的最佳方法是使用以下两行代码

cmd.Parameters@("ID").Value = CategoryIdTxt.Text

在设置@ID值的行中,将其更改为此

''' @ID '''
Dim param As SqlParameter = New SqlParameter("@ID", SqlDbType.Int, 4)
param.Direction = ParameterDirection.Input
param.Value = Int32.Parse(CategoryIdTxt.Text);
cmd.Parameters.Add(param);

''' @CategoryResult '''
param = New SqlParameter("@CategoryResult", SqlDbType.VarChar, 50)
param.Direction = ParameterDirection.Output
cmd.Parameters.Add(param);
您无需再次申报。只需设置它的值。我发现处理参数的最佳方法是使用以下两行代码

cmd.Parameters@("ID").Value = CategoryIdTxt.Text

仍然得到相同的错误。如何将此文本框类别YIDTXT.Text的值作为ID输入参数传递仍然会遇到相同的错误。如何将此textbox类别YidText.Text的值作为ID输入参数传递