C#ADO.NET-找不到存储过程
本文关键字:存储过程 找不到 NET- C#ADO | 更新日期: 2023-09-27 18:21:08
我正试图通过C#、ADO.NET执行存储过程。下面是我试图执行的代码:
using (SqlConnection conn = new SqlConnection(".;Initial Catalog=MyDB;User ID=sa;Password=***"))
{
try
{
string cmdText = "dbo.sp_Create_FlaggedItemEntry @URI, @ID";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
conn.Open();
cmd.CommandText = cmdText;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@URI", value1);
cmd.Parameters.AddWithValue("@ID", value2);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null)
{
conn.Close();
}
}
}
现在,当我尝试调试它时,在cmd.ExecuteNonQuery();
-"找不到存储过程dbo.sp_Create_FlaggedItemEntry"行出现错误
我验证了连接字符串是否全部正确,并且存储过程是否存在。此外,如果我将-cmd.CommandType = CommandType.StoredProcedure;
行更改为cmd。CommandType=CommandType.Text;它按预期成功执行。
有人能建议我在这里遗漏了什么和做错了什么吗?如果这是非常基本的东西,请原谅我,因为我上次使用ADO.NET 已经很久了
CommandType.StoredProcedure
意味着CommandText
应该只包含存储过程的名称。
从字符串中删除参数名称。
从命令文本中取出参数。此外,您不需要指定dbo。
它使用CommandType.Text
的原因是因为它是一个合法的SQL命令——如果你打开SSMS并在其中键入它,只要你还创建变量@URI和@ID,它就会起作用
此处的文档
您应该在connectionString中提到数据源/服务器。对于CommandText@Slaks也是正确的。