我使用下面的代码查询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)
编辑:字段相同,这是一个屏幕截图
答案 0 :(得分:2)
我无法访问自己,所以我无法尝试这一点,但这里可能有用。首先,我们打印出结果集中列的名称,以防在工作时出现一些区分大小写。
然后我们使用位置参数(1,2,..)而不是名称来对result.next循环进行解决。无论名称是什么,这都应该使它工作。
一旦弄清楚名称问题是什么,请用正确的名称替换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);
}