我做了一个SQL查询,我试图用它来存储注册到数据库中,但错误消息“找不到存储过程”不断出现,我只是想知道是否有什么关键我错过了。
public partial class Register : Form
{
string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|Login12.mdf;Integrated Security=True;Asynchronous Processing=True;User Instance=False;Context Connection=False";
public Register()
{
InitializeComponent();
}
private void BtnRegistered_Click(object sender, EventArgs e)
{
var myForm = new LOGIN();
myForm.Show();
Close();
if (UNtxtBox.Text == "" || PasswordtxtBox.Text == "")
MessageBox.Show("Please Fill Madatory Fields");
using (SqlConnection sqlCon = new SqlConnection(connectionString))
{
sqlCon.Open();
SqlCommand sqlCmd = new SqlCommand("UserAdd",sqlCon);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@MNumber",IDtxtBox.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Username", UNtxtBox.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Password", PasswordtxtBox.Text.Trim());
sqlCmd.Parameters.AddWithValue("@FirstName", FNtxtBox.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Surname", SNtxtBox.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Email", EAtxtBox.Text.Trim());
sqlCmd.Parameters.AddWithValue("@DOB", DOBtxtBox.Text.Trim());
sqlCmd.ExecuteNonQuery();
MessageBox.Show("Success");
Clear();
}
这是我的SQL查询:
CREATE PROCEDURE UserAdd
@Mnumber nvarchar(50),
@Username nvarchar(50),
@Password nvarchar(50),
@FirstName nvarchar(50),
@Surname nvarchar(50),
@Email nvarchar(50),
@DOB date
AS
INSERT INTO ABCD(Username,Password,FirstName,Surname,Email,DOB)
VALUES(@Username,@Password,@FirstName,@Surname,@Email,@DOB)
1条答案
按热度按时间dzjeubhm1#
除了数据库连接和存储过程是否存在之外,我从来没有在
AddValue
上遇到过什么运气,它的数据类型可能有点模棱两可。我建议您不要直接将文本框数据传递实现为SQL参数传递。通过单独处理UI中的数据,您可以对传递给存储过程的值运行健全性检查。
尝试在传递as之前构建SqlParameter,然后可以规定其数据类型以匹配表,例如:
另外,我看到您正在将Text传递给
@DOB
参数,尽管它在表中声明为date
类型。但在表中声明为