winforms 我一直试图将值存储到数据库中,但是,当我运行此程序时,它说我找不到存储过程

omhiaaxx  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(131)

我做了一个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)
dzjeubhm

dzjeubhm1#

除了数据库连接和存储过程是否存在之外,我从来没有在AddValue上遇到过什么运气,它的数据类型可能有点模棱两可。
我建议您不要直接将文本框数据传递实现为SQL参数传递。通过单独处理UI中的数据,您可以对传递给存储过程的值运行健全性检查。
尝试在传递as之前构建SqlParameter,然后可以规定其数据类型以匹配表,例如:

sqlCmd.Parameters.Add(new SqlParameter("@Mnumber", SqlDbType.NVarChar, 50) {Value = "Some text"});

另外,我看到您正在将Text传递给@DOB参数,尽管它在表中声明为date类型。

sqlCmd.Parameters.AddWithValue("@DOB", DOBtxtBox.Text.Trim())

但在表中声明为

@DOB date

相关问题