无法从 Statement.executeQuery() 中获取选定的列

Posted

技术标签:

【中文标题】无法从 Statement.executeQuery() 中获取选定的列【英文标题】:Not Able To get selected columns from Statement.executeQuery() 【发布时间】:2016-10-08 18:56:23 【问题描述】:

我是 Java Swing 编程的新手,所以请多多包涵。 我已使用 JDBC ODBC 驱动程序将我的JFrame 连接到 MA Access 数据库,这是错误代码。

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        con = DriverManager.getConnection("jdbc:odbc:MS Access Database");
        st = con.createStatement();
        String q = "select "+Name+",Date/Subject from "+$Class;
        R = st.executeQuery(q);

        int row=0;
        while(R.next())
        
            Table.setValueAt(R.getString("Date/Sujbect"),row,0);
            Table.setValueAt(R.getString(Name),row,1);
            row++;
       

当到达st.executeQuery(q) 时,它会抛出一个异常说。

"Too few Parameters. Expected 2". 

我不明白的是:当查询写成这样

"select * from "+ $Class;

它工作得很好。即使在其他一些JFrames,我也在做同样的事情。当我提到确切的列而不是星号(*)时,此异常作为日志持续存在。

如果有任何解决方法或我可以使用的任何其他方法,也请告诉我。

【问题讨论】:

你能分享一下你的表结构吗? 您的表格是否有名为“日期/主题”的列?如果是这样,那么您需要将其括在方括号中,[Date/Subject],否则查询解析器会将Date/Subject 解释为Date 列(或函数)除以Subject 列.如果这些列不存在,则 Access 数据库引擎会将它们解释为参数占位符,因此会出现“预期参数”错误。 【参考方案1】:

如果有任何解决方法,请告诉我

问题在于您的 SQL 语句。你在某处有错误。

String q = "select "+Name+",Date/Subject from "+$Class;

如果您的 SQL 有问题,请不要使用变量。首先通过对列名进行硬编码来使 SQL 工作。比如:

String q = "Select Column1, Column2 from TableName";

然后,一旦你开始工作,你可以尝试使语句动态并使用变量来指定你的列名或表名。

如果您需要更多帮助,请查找 SQL 教程并查找正确的语法。这是一个帮助您入门的方法:JDBC Database Access。

我们不知道您的表名或列名,因此无法为您编写代码。那是你的工作。

【讨论】:

以上是关于无法从 Statement.executeQuery() 中获取选定的列的主要内容,如果未能解决你的问题,请参考以下文章

无法从资源加载位图

为啥我无法从 Alamofire 获取请求结果

DateTimeParseException:无法解析文本:无法从 TemporalAccessor 获取 LocalDateTime

无法从 'char[]' 转换为 'string[]' [关闭]

无法远程调试应用程序 - 端口无法从外部访问

无法从状态 '' 解析 '...'