【发布时间】: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