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 已经很久了

C#ADO.NET-找不到存储过程

CommandType.StoredProcedure意味着CommandText应该只包含存储过程的名称。

从字符串中删除参数名称。

从命令文本中取出参数。此外,您不需要指定dbo。

它使用CommandType.Text的原因是因为它是一个合法的SQL命令——如果你打开SSMS并在其中键入它,只要你还创建变量@URI和@ID,它就会起作用

此处的文档

您应该在connectionString中提到数据源/服务器。对于CommandText@Slaks也是正确的。