无法从 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;
它工作得很好。即使在其他一些JFrame
s,我也在做同样的事情。当我提到确切的列而不是星号(*)时,此异常作为日志持续存在。
如果有任何解决方法或我可以使用的任何其他方法,也请告诉我。
【问题讨论】:
你能分享一下你的表结构吗? 您的表格是否有名为“日期/主题”的列?如果是这样,那么您需要将其括在方括号中,[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() 中获取选定的列的主要内容,如果未能解决你的问题,请参考以下文章
DateTimeParseException:无法解析文本:无法从 TemporalAccessor 获取 LocalDateTime