【问题标题】:Stored procedure not found未找到存储过程
【发布时间】:2017-03-17 23:00:59
【问题描述】:

我有这段代码用于使用 Windows 窗体应用程序将数据插入数据库。

但是我得到了这个错误

找不到存储过程“sp_insert”

我没有使用任何外部服务器,它是本地数据库

更新:似乎我没有存储过程,所以我尝试创建一个,但它引发了另一个错误

CREATE PROCEDURE sp_insert
    @UserName varchar(20),
    @Password varchar(18),
    @Email varchar(50),
    @Name varchar(20),
    @Surname varchar(20)
AS
    -- here the error occurs "error near syntax" but User is my table name 
    -- and it's  correct I don't know what is the problem is
    INSERT INTO User (UserName, Password, Email, Name, Surname)
    VALUES (@UserName, @Password, @Email, @Name, @Surname)

C#代码:

SqlConnection con = new SqlConnection(@"Data Source=    (LocalDB)\v11.0;AttachDbFilename=D:\TaxiBooking\TaxiBooking\TaxiBooking\Registraion.mdf;Integrated Security=True;");

SqlCommand cmd = new SqlCommand("sp_insert", con);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@UserName",txtUser.Text);
cmd.Parameters.AddWithValue("@Password", txtPassword.Text);
cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
cmd.Parameters.AddWithValue("@Name", txtName.Text);
cmd.Parameters.AddWithValue("@Surname", txtSurname.Text);

con.Open();
cmd.ExecuteNonQuery();

【问题讨论】:

  • 这个错误看起来很明显,你不觉得吗?您在该数据库中是否有具有该名称的存储过程?附带说明一下,使用 sp_ 前缀命名存储过程被认为是错误的,因为您可能会与系统存储过程名称发生冲突
  • @Steve 哎呀,我在发布问题后想通了。现在我尝试添加一个存储过程,但它显示错误
  • 你遇到了什么错误?
  • “user”是关键字,改表名。在您这样做之前,您可以使用 [user]。
  • 旁注:您应该为您的存储过程使用sp_ 前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免 sp_ 并使用其他东西作为前缀 - 或者根本不使用前缀!

标签: c# sql-server database stored-procedures


【解决方案1】:

为什么不试试 dbo.sp_insert。

SqlCommand cmd = new SqlCommand("dbo.sp_insert", con);

【讨论】:

    【解决方案2】:

    您使用的是保留字:

    改变

     INSERT INTO User( UserName,Password,Email,Name,Surname)
    

     INSERT INTO [User]( UserName,Password,Email,Name,Surname)
    

    尽量避免使用看起来会与您正在编码的操作系统或应用程序共享的术语。你会省去一些麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      相关资源
      最近更新 更多