将数据插入 ms 访问 [重复]
Posted
技术标签:
【中文标题】将数据插入 ms 访问 [重复]【英文标题】:Inserting data into ms access [duplicate] 【发布时间】:2019-06-05 08:55:25 【问题描述】:我正在尝试将数据插入到 ms 访问中
我已经重新检查了很多次代码似乎没有错
private void registerbutton_Click(object sender, EventArgs e)
registerconnection.Open();
OleDbCommand insert = new OleDbCommand();
insert.Connection = registerconnection;
insert.CommandText = "insert into StudentDatabase (FirstName, LastName, DOB, City, State, Email, ContactNo, ContactNo2, Courses, Username, Password, DateRegister) values ('"+fnametextbox.Text+ "','" + lnametextbox.Text + "','" + dobtextbox.Text + "','" + citytextbox.Text + "','" + statetextbox.Text + "','" + emailtextbox.Text + "','" + ctcnotextbox.Text + "','" + ctcnotextbox2.Text + "','" + coursetextbox.Text + "','" + usernametextbox.Text + "','" + passwordtextbox.Text + "','" + registerdatetextbox.Text + "')";
insert.ExecuteNonQuery();
MessageBox.Show("Data inserted");
我以为它能够插入数据,但结果却出错了
【问题讨论】:
使用您的 SQL 语句创建一个变量,将其打印到调试/控制台并在 SQL 编辑器中检查 - 您会发现错误详细信息。例如。你可以让'
登录文本框,这是 sql 注入的根,它破坏了查询结构
错误是什么?
密码是关键字,在 Access 中必须用方括号转义。将密码更改为 [密码]。更重要的是,您对 SQL 注入持开放态度,并且需要更改代码以使用参数,这也将有助于解决如何表示值类型的问题(即,' ' 表示字符串,# # 表示日期等......)
如果您已经知道错误的含义,那么请告诉我们它是什么……为什么要让我们猜测或弄清楚呢?让人们可以轻松地帮助您...
但是,从更广泛的角度来看,我还建议您阅读this 以了解为什么您的代码存在很大的安全风险。然后您可以阅读this 以开始了解如何通过使用适当的参数化查询来克服该风险。确保您遵循 OLE DB 示例。如果您在网上进行更广泛的搜索,您可以找到更多示例。 (作为附带的好处,它还可以帮助您避免由于意外输入值、不正确的字符串转义等导致的琐碎语法错误。)
【参考方案1】:
这将对您有所帮助...我没有测试代码,但我认为它会起作用。
http://dotnetsridhar.blogspot.com/2012/05/ma-access-database-for-windows-c.html
还要检查你的文本框输入值,一些特殊字符是 SQL 中的保留字符,例如 '; ,如果用户在文本框上键入这些特殊字符并通过您当前的代码逻辑进行处理,它可能会中断,因为您尝试在没有正确输入验证句柄的情况下添加所有字符串值,并且它可能会作为有效的 SQL 语句失败...调试器将是您的好朋友在这里进一步诊断“insert.CommandText”值是什么
【讨论】:
以上是关于将数据插入 ms 访问 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Timestamp(date.getTime()) 转换为 ms 访问日期? [复制]
用户''@ localhost'拒绝访问。试图插入数据PHP Mysql [重复]