我已经创建了一个学生数据库管理应用程序,我想添加一个功能,如数据库中已存在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 :-) ");
}
答案 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
中可以防止这种情况发生。