使用 ODBC 转义包含问号的访问表名称
Posted
技术标签:
【中文标题】使用 ODBC 转义包含问号的访问表名称【英文标题】:Escape an access table name containing a question mark with ODBC 【发布时间】:2013-09-03 13:19:26 【问题描述】:我有一个 Access 数据库要查询如下:
id - name - Print?
1 - one - Yes
2 - two - No
现在我在 java 中的查询,使用带有 ODBC 连接器的 PreparedStatement,如下所示:
select * from table where [Print?] = Yes
我找不到绕过这个问题的方法。我知道无论谁创建数据库,这都是一个糟糕的设计选择,但它与已经改变它的应用程序紧密相连,这不是一种选择。
PS。我读过How to query for a MS Access column whose name has a question mark, via ODBC?,但这并没有回答我的问题。
【问题讨论】:
你试过Statement.executeQuery("select * from table where [Print?] = Yes")
而不是使用PreparedStatement吗?
我现在试过了 - 出现以下错误。 “[Microsoft][ODBC Text Driver]COUNT 字段不正确”,微软表示可以通过以下方式解决: 1. 要解决此问题,您必须删除“?”源文件中列名字段中的字符。让我想知道为什么他们允许您在访问表名中使用问号而不是在 ODBC 中使用问号...
微软逻辑...您有权在数据库上创建视图吗?正如这里所建议的***.com/questions/1409610/…
我决定创建另一个查询:qry_print 只选择 id 和 Print?从表和名称打印? “打印”栏。正如另一个答案中所建议的那样,几乎提出了一个观点。希望有另一种方法,但我想有时一个混乱的问题需要一个混乱的解决方案。谢谢
【参考方案1】:
正如问题的 cmets 所建议的那样,显然唯一的解决方法是要么
重命名 Access 表中的列以删除问号,或
在 Access 中创建保存的查询以返回具有不同名称的列,然后针对查询而不是表运行 JDBC 操作。
【讨论】:
以上是关于使用 ODBC 转义包含问号的访问表名称的主要内容,如果未能解决你的问题,请参考以下文章
.htaccess 不会转义 RewriteRule 上的问号