SqlCommand 不接受参数参数时出错
Error With SqlCommand not accepting Parameter Arguments
我正在尝试使用以下代码在我的数据库中执行一个存储过程:
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["myCNN"].ConnectionString))
{
using (var cmd = new SqlCommand("dbo.myStoredProcedure", connection))
{
cmd.Parameters.Add("@PatientId", SqlDbType.VarChar, 40).Value = number;
cmd.Parameters.Add("@NickName", SqlDbType.VarChar, 20).Value = "stlukeshs";
var reader = cmd.ExecuteReader();
while(reader.Read())
{
//Do Stuff..
}
//closer reader
reader.Close();
}
}
但是,在执行时我收到一条错误消息:
An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code
Additional information: Procedure or function 'myStoredProcedure' expects parameter '@PatientId', which was not supplied.
很明显,您看到我正在添加参数,我的 number
值为 100,而不是 null。所以我有点困惑为什么它没有得到我的参数参数。
您需要指定CommandType
,默认为Text
。您必须将 StoredProcedure
指定为 CommandType
即
cmd.CommandType = CommandType.StoredProcedure;
所以,你的完整代码应该是:
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["myCNN"].ConnectionString))
{
using (var cmd = new SqlCommand("dbo.myStoredProcedure", connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@PatientId", SqlDbType.VarChar, 40).Value = number;
cmd.Parameters.Add("@NickName", SqlDbType.VarChar, 20).Value = "stlukeshs";
var reader = cmd.ExecuteReader();
while(reader.Read())
{
//Do Stuff..
}
//closer reader
reader.Close();
}
}
我正在尝试使用以下代码在我的数据库中执行一个存储过程:
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["myCNN"].ConnectionString))
{
using (var cmd = new SqlCommand("dbo.myStoredProcedure", connection))
{
cmd.Parameters.Add("@PatientId", SqlDbType.VarChar, 40).Value = number;
cmd.Parameters.Add("@NickName", SqlDbType.VarChar, 20).Value = "stlukeshs";
var reader = cmd.ExecuteReader();
while(reader.Read())
{
//Do Stuff..
}
//closer reader
reader.Close();
}
}
但是,在执行时我收到一条错误消息:
An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code
Additional information: Procedure or function 'myStoredProcedure' expects parameter '@PatientId', which was not supplied.
很明显,您看到我正在添加参数,我的 number
值为 100,而不是 null。所以我有点困惑为什么它没有得到我的参数参数。
您需要指定CommandType
,默认为Text
。您必须将 StoredProcedure
指定为 CommandType
即
cmd.CommandType = CommandType.StoredProcedure;
所以,你的完整代码应该是:
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["myCNN"].ConnectionString))
{
using (var cmd = new SqlCommand("dbo.myStoredProcedure", connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@PatientId", SqlDbType.VarChar, 40).Value = number;
cmd.Parameters.Add("@NickName", SqlDbType.VarChar, 20).Value = "stlukeshs";
var reader = cmd.ExecuteReader();
while(reader.Read())
{
//Do Stuff..
}
//closer reader
reader.Close();
}
}