数据未保存

时间:2016-08-04 07:31:35

标签: c# .net sql-server visual-studio-2012

using (SqlConnection con = new SqlConnection("Data Source=DESKTOP-O72COGQ;Initial Catalog=ClinicManagementtest;Integrated Security=True"))
        {
            con.Open();
            SqlCommand sc = new SqlCommand("INSERT INTO  Patient_Details VALUES(@Id, @Name, @Age, @Contact No, @Address", con);
            sc.Parameters.AddWithValue("@Id", textBox1.Text);
            sc.Parameters.AddWithValue("@Name", textBox2.Text);
            sc.Parameters.AddWithValue("@Contact No", textBox3.Text);

            sc.Parameters.AddWithValue("@Address", textBox5.Text);
            int o = sc.ExecuteNonQuery();
            MessageBox.Show(o + ":Record has been inserted");
            con.Close();

        }

enter image description here

2 个答案:

答案 0 :(得分:0)

你在这里犯了很多错误。

  • 首先,如果您没有列出清单,表格中有6个字段 在进行插入查询时,您应该添加值 所有6个字段
  • 其次,您有5个参数占位符,但只添加4个 参数,这是另一个例外。
  • 最后但并非最不重要的是insert语句的语法是正式的 错误,因为没有关闭的parenthesys

所以,让我们试着尽我们所知来解决问题

string cmdText = @"INSERT INTO  Patient_Details 
                         (ID, Name, Age, Gender, [Contact No], Address) 
                   VALUES(@Id,@Name,@Age,@Gender,@ContactNo,  @Address)"
using (SqlConnection con = new SqlConnection(....))
{
    con.Open();
    SqlCommand sc = new SqlCommand(cmdText, con);
    sc.Parameters.AddWithValue("@Id", textBox1.Text);
    sc.Parameters.AddWithValue("@Name", textBox2.Text);

    // For the following two fields, add a value or remove 
    // the parameters and fix the query text above....
    sc.Parameters.AddWithValue("@age", ????); 
    sc.Parameters.AddWithValue("@gender", ????);
    sc.Parameters.AddWithValue("@ContactNo", textBox3.Text);
    sc.Parameters.AddWithValue("@Address", textBox5.Text);
    int o = sc.ExecuteNonQuery(); 
    MessageBox.Show(o + ":Record has been inserted");
}

答案 1 :(得分:-1)

就像Sankar Raj指出你错过了)查询中的Insert和要添加的参数@Age。也不允许在参数@Contact No中使用空格。 您已使用using SqlConnection。我建议您同样使用SqlCommand,然后您不需要明确Dispose它。而且似乎你没有使用try catch那是你无法识别问题的。

建议代码

try{
    using (SqlConnection con = new SqlConnection("Data Source=DESKTOP-O72COGQ;Initial Catalog=ClinicManagementtest;Integrated Security=True"))
    {
        con.Open();
        using (SqlCommand sc = new SqlCommand("INSERT INTO  Patient_Details VALUES(@Id, @Name, @Age,@Gender, @ContactNo, @Address)", con)){
            sc.Parameters.AddWithValue("@Id", textBox1.Text);
            sc.Parameters.AddWithValue("@Name", textBox2.Text);
            sc.Parameters.AddWithValue("@Gender", textBox3.Text);
            sc.Parameters.AddWithValue("@ContactNo", textBox4.Text);
            sc.Parameters.AddWithValue("@Age", textBox5.Text);
            sc.Parameters.AddWithValue("@Address", textBox6.Text);
            int o = sc.ExecuteNonQuery();
            MessageBox.Show(o + ":Record has been inserted");
        }
    }
}catch(Exception ex){
     MessageBox.Show(ex.Message);
}

注意:我已删除con.Close()。由于您使用的是using语句,因此会自动Close& Dispose连接并释放它使用的资源。