当我尝试将文件路径保存到Microsoft访问数据库时遇到问题,当我从下面的代码中删除图像位置时,一切运行正常,一旦我尝试保存文件路径,我得到一个语法错误......
下面是查询...
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注入是开放的,但我会在以后的状态修复它,我也尝试过参数化查询,看看这是否有助于解决这个问题,但事实并非如此......
我也尝试用“/”
替换“\”任何帮助都会受到赞赏,因为这真让我烦恼......
答案 0 :(得分:4)
图像是MS-Access数据库引擎中的保留字。您不能像在您的查询中那样使用它。您需要将它封装在方括号之间(或者更好地更改该字段名称以避免将来出现类似问题)
....., [Image]) VALUES (.....
如果您知道字符串连接引起的问题,那么我建议您尽快切换到参数化查询。 (例如,如果您的company.getDescription返回包含单引号的值,您认为会发生什么?)
我觉得另一个重要的建议是放弃类似java的态度,使用get / set前缀方法返回类的属性。 C#最显着的特征之一是属性。使用它们。
public class Company
{
public string Description {get;set;}
public string Phone {get;set;}
.... and so on...
}