当我尝试将文件路径保存到 Microsoft Access 数据库时遇到问题,当我从下面的代码中删除图像位置时,一切运行正常,只要我尝试保存文件路径,我就会得到语法错误...
下面是查询...
string query = "INSERT INTO Company(companyName, phone, website, address, companyType, description, image) VALUES('" +
company.getName() + "','" + company.getPhone() + "','" + company.getWebsite() + "','" +
company.getAddress() + "','" + company.getType() + "','" + company.getDescription() + "','" +
company.getImage() + "')";
我知道我的代码对 sql 注入(inject)是开放的,但我会在稍后的状态下修复它,我也尝试了参数化查询以查看这是否有助于解决问题,但它没有..
我也试过用“/”替换“\”
任何帮助将不胜感激,因为这真的让我很烦......
最佳答案
图像是 MS-Access 数据库引擎中的保留字。您不能在像您这样的查询中按原样使用它。您需要将其封装在方括号之间(或者最好更改该字段名称以避免将来出现类似问题)
....., [Image]) VALUES (.....
如果您意识到字符串连接引起的问题,那么我真的建议您尽快切换到参数化查询。 (例如,如果您的 company.getDescription 返回包含单引号的值,您认为会发生什么情况?)
我想给出的另一个重要建议是放弃使用 get/set 前缀方法返回类属性的类 java 态度。 C# 最显着的特性之一是属性。使用它们。
public class Company
{
public string Description {get;set;}
public string Phone {get;set;}
.... and so on...
}
关于c# - 尝试将文件路径保存到数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40897549/