【问题标题】:Single quote in table name in a query c#查询c#中表名中的单引号
【发布时间】:2011-05-18 21:42:24
【问题描述】:

我正在尝试从 C# 对 dbase IV 表运行查询。我对 C# 的经验并不多,而且我已经束手无策了,因为我的 select 语句失败,因为我试图查询的表包含一个单引号。

我正在使用 ODBC 连接来连接到表,并且该部分工作正常。如果我重命名它并删除引号,我会在同一个表上运行一个查询。

我尝试用反斜杠转义它,使用 2 个单引号,并将查询参数化,结果发现这不适用于表名。

命令文本是这样的,这是问题的根源......

cmd.CommandText = "SELECT * FROM E4X'MAIN";

请帮助我完全陷入困境,花了几天时间寻找解决方案,但一次又一次地被挫败......

【问题讨论】:

  • 尝试以下操作:cmd.CommandText = "SELECT * FROM [E4X'MAIN]";
  • @svick: @svick:improving 的编辑建议是你隐含地批准了编​​辑,而你实际上又把它全部删除了。我认为只有在您真正同意编辑建议的情况下才应该选择该选项。
  • @H.B.,实际上,我拒绝了编辑,发现这意味着我不能直接编辑自己,点击“编辑”在 Oded 的历史修订中,你可以看到:貌似批准了 Ryan's编辑,然后在我的恢复它。
  • @svick:那么显然,在我猜还有待定建议时,也不应该编辑旧版本。等待可能有点烦人,但这是有原因的。

标签: c# sql escaping dbase


【解决方案1】:

也许:

cmd.CommandText = "SELECT * FROM [E4X'MAIN]";

?

编辑:

我到处寻找我所知道的问题的答案,但一无所获。我唯一能说的是,每个人似乎都一致同意这样的表名是一个的主意。但我猜想,既然您已经花了这么多时间,永久重命名表格对您来说不是一个选择。但如果是这样的话,我建议你接受它。

【讨论】:

  • 因为我是个白痴:) 固定。
  • 我还抱有希望,因为我没有尝试过方括号,但仍然没有运气。
  • 是的,我知道我正在尝试构建一个翻译器,它将从一个古老的估算软件中提取数据并将其插入到一个运行 MSSQL 的更现代的 MIS 系统中。这是我尝试用 C# 编写的第二个项目,他们都遇到了严重的问题,这似乎是不可能的。无论蒂姆,我都非常感谢您的帮助......干杯!
【解决方案2】:

是SQL SERVER?甲骨文?

试过了

cmd.CommandText = @"SELECT * FROM E4X'MAIN";
cmd.CommandText = @"SELECT * FROM [E4X'MAIN]";

?

【讨论】:

    【解决方案3】:

    仅供参考,我找到了解决问题的方法。如果我像这样构建我的查询,shazam 她会工作!

    cmd.CommandText = "SELECT * FROM \`E4X'MAIN.DBF\`;
    

    感谢您的所有帮助,希望这个答案能帮助其他陷入可怕命名约定的人

    里诺

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 2018-07-13
      • 2018-06-18
      • 1970-01-01
      • 2018-09-14
      • 2012-10-14
      • 2014-12-14
      相关资源
      最近更新 更多