将字符串传递给类将方法传递给存储的SQL过程的方法

时间:2015-01-23 10:26:43

标签: c# sql-server

我一直在努力解决一个问题几天似乎无法解决为什么这段代码没有做到它应该做的事情:

  1. 按下提交按钮时登录表格应该从文本框中取出文本并将其发送到名为“数据库连接”的类中的方法。

  2. “数据库连接”类有一个名为Insert_Data的方法,它应该获取这些字符串值,然后将此信息传递给本地SQL数据库中的存储过程

  3. 存储的进度应使用此信息执行并填充“访问者”表。

  4. 表格SignIn:

    变量:

    //DatabaseConnection databaseClass;
    string strCon;
    DatabaseConnection databaseClass;
    

    提交Button_Click事件:

            private void btnSubmit_Click(object sender, EventArgs e)
        {
            if (txtFirstName.Text.Trim().Length > 0 && txtSurname.Text.Trim().Length > 0)
            {
                lblAsterisk.Visible = false;
                lblAsterisk2.Visible = false;
                lblComplete2.Visible = false;
                lblComplete1.Visible = false;
    
                databaseClass = new DatabaseConnection();
                databaseClass.Insert_Data(txtFirstName.Text.Trim(), txtSurname.Text.Trim(), txtVisiting.Text.Trim(), txtReg.Text.Trim());
    
                MessageBox.Show("submitted information");
    

    方法正在调用的DatabaseConnection类:

    class DatabaseConnection
    
        private string strCon;
    
        public string connection_String
        {
            set { strCon = value; }
        }
    
        public void Insert_Data(string datFirstname, string datSurname, string datVisiting, string datReg)
        {
    
            strCon = Properties.Settings.Default.VistiorsConnectionString;
            SqlConnection connect = new SqlConnection(strCon);
    
            SqlCommand cmd = new SqlCommand("Submit_Data", connect);
    
            cmd.CommandType = CommandType.StoredProcedure;
    
            cmd.Connection.Open();
    
                cmd.Parameters.Add(new SqlParameter("@Firstname", datFirstname));
                cmd.Parameters.Add(new SqlParameter("@Surname", datSurname));
                cmd.Parameters.Add(new SqlParameter("@Visiting", datVisiting));
                cmd.Parameters.Add(new SqlParameter("@Car_Reg", datReg));
    
            cmd.ExecuteNonQuery();
    
        }
    

    存储过程(Submit_Data):

    CREATE PROCEDURE Submit_Data
    
    @Firstname varChar(50),
    @Surname varChar(50),
    @Visiting varChar(50),
    @Car_Reg nchar(10)
    
    AS
    Insert into tbl_visitors(Firstname, Surname, Visiting, Car_Reg)
    values (@Firstname, @Surname, @Visiting, @Car_Reg)
    
    RETURN 0
    

    这是我正在尝试做的三个阶段。我知道它在物理上调用了DatabaseConnection类,我知道如果我手动执行它运行的存储过程,但我似乎无法将数据传递给存储的进程。任何帮助表示赞赏。

    只是澄清一下,当程序执行时没有出现任何错误,一切似乎都加载,主要问题是按下提交按钮后,没有新数据被添加到数据库中。

1 个答案:

答案 0 :(得分:1)

我看到的是您在执行查询后没有关闭连接。可能存在问题。

我会向你推荐另一种方法,例如这部分代码:

using (var command = new SqlCommand("Submit_Data", connect) { CommandType = CommandType.StoredProcedure }) 
{
   connect.Open();

   command.Parameters.Add(new SqlParameter("@Firstname", datFirstname));
   command.Parameters.Add(new SqlParameter("@Surname", datSurname));
   command.Parameters.Add(new SqlParameter("@Visiting", datVisiting));
   command.Parameters.Add(new SqlParameter("@Car_Reg", datReg));

   command.ExecuteNonQuery();
   connect.Close();
}

我希望这个解决方案可以帮助您并回答您的问题。