OleDbConnection my_con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=C:\\Users\\SS\\Documents\\131Current1\\125\\Current one\\ClinicMainDatabase.accdb");
my_con.Open();
OleDbCommand o_cmd1 = my_con.CreateCommand();
o_cmd1.CommandText = "INSERT INTO Personal_Details(Date,Time,Patient_Name,Contact_Number,Gender,Allergic_To,KCO) VALUES ('" + DateTime.Now.ToString("dd-MM-yyyy") + "','" + DateTime.Now.ToString("h:mm:ss tt") + "','" + txtPatientName.Text + "','" + txtContactNo.Text + "','" + comboBoxGender.Text + "','" + txtAllergic.Text + "','" + txtKCO.Text + "')";
int j = o_cmd1.ExecuteNonQuery();
我在插入声明中收到语法错误如果有人帮助我,我不明白什么是错误我真的非常感谢。感谢提前。
答案 0 :(得分:1)
日期和时间通常是许多数据库系统中的保留关键字。你应该至少用[]包装它们。更优选地,如果您正在设计表格,请将字段名称更改为更具描述性的名称。例如,如果日期和时间代表提醒,那么您可以使用ReminderDate和ReminderTime,以免干扰保留的关键字。
并遵循已经给出的参数建议。
答案 1 :(得分:0)
使用命令参数而不是连接字符串。您的代码是针对SQL注入攻击打开的,或者在您的特定情况下,该问题可能与无效的用户输入有关。试着解决这种情况:
如果txtContactNo.Text
返回此字符串"Peter's contact is +123456"
怎么办?那么SQL查询将如何?密切关注'性格。
无论您的输入验证有多好,您都应该始终使用参数化SQL查询。它还具有查询计划缓存等优点。
所以在你的情况下,代码必须这样写:
OleDbConnection my_con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=C:\\Users\\SS\\Documents\\131Current1\\125\\Current one\\ClinicMainDatabase.accdb");
using(my_con)
{
my_con.Open();
using(OleDbCommand o_cmd1 = my_con.CreateCommand())
{
o_cmd1.CommandText = @"
INSERT INTO Personal_Details ([Date], [Time], Patient_Name, Contact_Number, Gender, Allergic_To, KCO)
VALUES (@date, @time, @name, @contNo, @gender, @alergic, @kco)";
o_cmd1.Parameters.AddWithValue("@date", DateTime.Now.ToString("dd-MM-yyyy"));
o_cmd1.Parameters.AddWithValue("@time", DateTime.Now.ToString("h:mm:ss tt"));
o_cmd1.Parameters.AddWithValue("@name", txtPatientName.Text);
o_cmd1.Parameters.AddWithValue("@contNo", txtContactNo.Text);
o_cmd1.Parameters.AddWithValue("@gender", comboBoxGender.Text);
o_cmd1.Parameters.AddWithValue("@alergic", txtAllergic.Text);
o_cmd1.Parameters.AddWithValue("@kco", txtKCO.Text);
o_cmd1.ExecuteNonQuery();
}
}
还要确保正确处理连接和命令对象(使用:) using
关键字)
有关详细信息,请阅读MSDN中的文档 https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue(v=vs.110).aspx