我在商店程序中检索多个参数时遇到问题
这是我的代码
enter code here
SqlCommand cmd = new SqlCommand("getdataComport", cnn);
cmd.CommandType = CommandType.StoredProcedure;
// set up the parameters
cmd.Parameters.Add("@ComName", SqlDbType.Text).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@BaudRate", SqlDbType.Text).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@batchName", SqlDbType.Text).Direction = ParameterDirection.Output;
// open connection and execute stored procedure
cnn.Open();
cmd.ExecuteNonQuery();
int retval = (int)cmd.Parameters["@retParam"].Value;
// read output value from @NewId
comname = cmd.Parameters["@ComName"].Value.ToString();
Baudrate = Convert.ToInt32(cmd.Parameters["@BaudRate"].Value);
batchname = cmd.Parameters["@batchName"].Value.ToString();
cnn.Close();
这是我的商店程序
ALTER procedure [dbo].[getdataComport]
@ComName varchar(20) out,
@BaudRate int out,
@batchName varchar(20) out
as
begin
select top 1
@ComName=ComPortName,
@BaudRate=BaudRateName,
@batchName=BatchName
from tblComPort
order by Valuedate desc
end
我跑的时候总是收到错误 有人可以帮我吗?
答案 0 :(得分:0)
我首先要确保数据类型正确:
cmd.Parameters.Add("@ComName", SqlDbType.VarChar, 20).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@BaudRate", SqlDbType.Int).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@batchName", SqlDbType.VarChar, 20).Direction = ParameterDirection.Output;
并删除:
int retval = (int)cmd.Parameters["@retParam"].Value;
因为:那不存在。
请注意,ExecuteNonQuery
直接 int
返回值,但它与来自sproc的return
值不同;为此,您需要一个ParameterDirection.ReturnValue
的参数。这没有实际意义,因为你的sproc没有return
值。