【问题标题】:java.sql.SQLException: Column not found Error?java.sql.SQLException:找不到列错误?
【发布时间】:2012-11-09 02:31:05
【问题描述】:

我正在使用以下代码查询 Microsoft Access 数据库。 SELECT 语句中正确说明了数据库字段名称。试图弄清楚为什么我会收到这个错误。真的需要一些帮助..谢谢

public Item getIteminfo(String itemCode) throws ClassNotFoundException, SQLException {
     Statement myStatement = getConnection();
     Item item = null;
     String itemDescription;
     int itemPrice;
     String sql = "SELECT ItemDescription, ItemPrice FROM itemCatalog WHERE ItemCode = '"+itemCode+"'";
     ResultSet results = myStatement.executeQuery(sql);
     
     while (results.next()){
         itemDescription = results.getString("ItemDescription");
         itemPrice = results.getInt("ItemPrice");
         item = new Item(itemDescription, itemPrice);
     }
     closeConnection();
     return item;
 }

这是错误信息:

java.sql.SQLException: Column not found
    at sun.jdbc.odbc.JdbcOdbcResultSet.findColumn(JdbcOdbcResultSet.java:1849)
    at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:410)
    at checkoutsimulation.DAO.getIteminfo(DAO.java:52)
    at checkoutsimulation.ItemCatalog.getItemdetails(ItemCatalog.java:61)
    at checkoutsimulation.CheckoutSystem.bnPurchaseActionPerformed(CheckoutSystem.java:463)
    at checkoutsimulation.CheckoutSystem.access$100(CheckoutSystem.java:20)

已编辑:字段相同,这是屏幕截图

【问题讨论】:

  • 你能检查一下数据库中列名的大小写和你指定的完全一样吗?
  • 是的..字段是相同的,见屏幕截图
  • 您是否调试并查看天气是否有任何结果?还是结果集为空?

标签: java ms-access dao


【解决方案1】:

我自己没有访问权限,所以我不能尝试这个,但这里有一些可能有效的方法。首先,我们打印出结果集中列的名称,以防在工作中有一些区分大小写的情况。

然后我们在 result.next 循环中使用位置参数 (1, 2, ..) 而不是名称来解决问题。无论名称是什么,这都应该使它工作。

一旦你弄清楚名称问题是什么,将 1、2 等替换为正确的名称。

 ResultSet results = myStatement.executeQuery(sql);

 ResultSetMetaData meta = results.getMetaData();
 for (int index = 1; index <= meta.getColumnCount(); index++)
 {
    System.out.println("Column " + index + " is named " + meta.getColumnName(index);
 }
 while (results.next()){
     itemDescription = results.getString(1);
     itemPrice = results.getInt(2);
     item = new Item(itemDescription, itemPrice);
 }

【讨论】:

  • 嘿,谢谢..现在试试这个,给我一点时间。
  • 是否有任何“列 1 被命名...”行打印出来?我想知道你是否得到一个没有列的结果集。也许添加一个 println 来显示列数。
  • 我不认为 for 循环可以执行...第一个错误是在 ResultSetMetaData meta = results.getMetaData()。
猜你喜欢
  • 2020-05-05
  • 2019-11-11
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 2019-12-07
相关资源
最近更新 更多