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

标签 c# sql wpf ms-access

当我尝试将文件路径保存到 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/

相关文章:

java - 使用相同的语句对象在多个线程中执行多个查询?

wpf - 'System.Windows.Media.Animation.DoubleAnimation' 类型的 AnimationTimeline 不能用于为 'Row' 类型的 'System.Int32' 属性设置动画

c# - Task.WaitAll - 不等待?

c# - 旋转 PDF 页面内容而不是实际页面

SQL 根据条件获取行

c# - 如何在 WPF 中使模型类可观察

c# - WPF 拼写检查语言

c# - 使用 C# 解析结果中的 JSON 数据

c# - C#获取postgres表数据(CSV格式)

mysql - 如何为 MySQL 中字符串的每个字母分配一个变量?