1

我正在访问数据库中搜索项目代码并返回项目对象,如下面的代码所示。任何关于我为什么会收到此错误的建议将不胜感激。谢谢

public Item getIteminfo(String itemCode) throws ClassNotFoundException, SQLException {
     Statement myStatement = getConnection();
     Item item = null;
     String itemDescription;
     int itemPrice;
     String sql = "SELECT * FROM itemCatalog WHERE ItemCode = '"+itemCode+"'";
     ResultSet results = myStatement.executeQuery(sql);

     while (results.next()){
         itemDescription = results.getString("Item Description");
         itemPrice = results.getInt("Item Price");
         item = new Item(itemDescription, itemPrice);
     }
     closeConnection();
     return item;
 }
}

这是错误详细信息:

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3109)
    at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:337)
    at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:252)
    at checkoutsimulation.DAO.getIteminfo(DAO.java:49)
    at checkoutsimulation.ItemCatalog.getItemdetails(ItemCatalog.java:61)
4

4 回答 4

1

我也面临同样的问题。终于什么也没解决,请检查数据库字段名称 ItemCode(WHERE ItemCode = '"+itemCode+"'") 与您的数据库当您的 SQL 上的字段名称错误时会发生此类错误....

于 2012-12-14T17:51:11.800 回答
1

在这种情况下,您应该使用PreparedStatement

PreparedStatement st = con.prepareStatement(""SELECT * FROM itemCatalog WHERE ItemCode=?");
st.setString(1,itemcode);
ResultSet rs = st.executeQuery();
于 2014-08-07T04:16:32.157 回答
1

我对 Java 或 ODBC 并不完全熟悉,但我知道数据库不喜欢带空格的列名。

尝试将列名括在括号中。

itemDescription = results.getString("[Item Description]");

于 2012-11-09T01:43:40.613 回答
0

如果您在查询的选择部分引用不存在的字段,也会发生这种情况。例如如下查询。

Select MisSpeltFieldName from tblStuff
于 2013-10-04T11:10:11.347 回答