在C#学生数据库窗口应用程序中,如果Student_ID不存在则插入数据,而在Student_ID存在时不插入数据

时间:2015-12-12 22:31:51

标签: c# sql-server

我已经创建了一个学生数据库管理应用程序,我想添加一个功能,如数据库中已存在Student_ID,然后它会显示一条消息,表明它存在。如果Student_ID尚不存在,则会继续。

请帮助我!

我的C#窗口表单应用程序SAVE button_clicked代码是:

private void button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Saikat Dutta\Documents\Chemistry.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

    con.Open();

    SqlCommand cmd = new SqlCommand(@"INSERT INTO Student
                                      (Student_ID, Student_Name, Address, DOB, Date_of_admission, Age, Mobile, Parent_Name, Parent_Mobile, Standerd, Subject, Fees, January, February, March, April, May, June, July, August, September, October, November, December)
                                      VALUES        ('" + textBox1.Text + "' , '" + textBox2.Text + "' , '" + textBox3.Text + "' , '" + dateTimePicker1.Value.ToString("dd/MM/yyyy") + "' , '" + dateTimePicker2.Value.ToString("dd/MM/yyyy") + "'  ,  '" +  textBox4.Text + "' , '" + textBox5.Text + "' , '" + textBox6.Text + "' , '" + textBox7.Text + "' , '" + textBox8.Text + "' , '" + comboBox1.Text + "' , '" + comboBox2.Text + "', '" + comboBox3.Text + "' , '" + comboBox4.Text + "' , '" + comboBox5.Text + "' , '" + comboBox6.Text + "' , '" + comboBox7.Text + "' , '" + comboBox8.Text + "' , '" + comboBox9.Text + "' , '" + comboBox10.Text + "' , '" + comboBox11.Text + "' , '" + comboBox12.Text + "' , '" + comboBox13.Text + "', '" + comboBox14.Text + "')" , con );

    cmd.ExecuteNonQuery();

    con.Close();

    MessageBox.Show(" DATABASE SAVED SUCCESSFULLY :-) ");
}

2 个答案:

答案 0 :(得分:0)

您需要为具有匹配ID的学生查询学生表。如果新学生ID为“13”,则查询可能类似于:

select * from Student where Student_ID = "13"

然后,检查查询结果是否为空。如果为空,则添加新学生,否则报告已存在。虽然理想情况下,数据库系统的用户不会手动选择学生ID,但它会自动生成,除非您使用类似社交的ID。在任何情况下,您都要根据数据库中要求唯一的任何字段检查查询结果。

答案 1 :(得分:0)

  

我想添加一个功能......

然后我会将逻辑放在存储过程中,这样您就不会在任何想要使用它的地方重复该代码。这也意味着您不应该使用文字的动态SQL。而是使用SqlParameter传递值。作为奖励积分,sql将帮助“插入或更新?”

在存储过程中,它可能如下所示:

if not exists ( select userId from users where userId = @userIdParameter )
begin 
    insert into users ....
end
else 
begin

    update users ....
end

P.S。强烈建议不要在sql中使用字符串连接,因为它很容易受到SQL注入攻击。将文本框条目放在SqlParameter中可以防止这种情况发生。