[英]Insert into access database Query Error in C#
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();
我在插入语句中收到语法错误,我不明白如果有任何人帮我,那是什么错误,我真的非常感谢full.Thanks。
在许多数据库系统中,日期和时间通常是保留的关键字。 您至少应该用[]包裹它们。 更可取的是,如果要设计表格,请将字段名称更改为更具描述性的名称。 例如,如果日期和时间表示提醒,则可以使用ReminderDate和ReminderTime以免干扰保留的关键字。
并遵循已经给出的参数建议。
使用命令参数而不是串联字符串。 您的代码已接受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/zh-cn/library/system.data.sqlclient.sqlparametercollection.addwithvalue(v=vs.110).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.