尝试将文件路径保存到数据库时出错

时间:2016-11-30 20:27:00

标签: c# sql wpf ms-access

当我尝试将文件路径保存到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注入是开放的,但我会在以后的状态修复它,我也尝试过参数化查询,看看这是否有助于解决这个问题,但事实并非如此......

我也尝试用“/”

替换“\”

任何帮助都会受到赞赏,因为这真让我烦恼......

1 个答案:

答案 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...
}