2012-11-09 47 views
1

我正在搜索项目代码的访问数据库并返回项目对象,如下面的代码所示。任何意见,为什么我得到这个错误将不胜感激。由于SQLException:[Microsoft] [ODBC Microsoft Access Driver]参数太少。预期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) 

回答

1

我不完全熟悉Java或ODBC,但我确实知道,数据库不善待列名称用空格。

尝试在括号中包装列名称。

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

1

我也面临同样的问题。终于解决 没有什么,请检查数据库字段名称ItemCode(WHERE ItemCode =“‘+ itemCode +’”“) 与数据库 这样的错误发生在你的SQL时字段名称错误....

0

这可以如果您在查询的选择部分引用一个不存在的领域也发生了。 例如,类似下面的查询。

Select MisSpeltFieldName from tblStuff 
1

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

PreparedStatement st = con.prepareStatement(""SELECT * FROM itemCatalog WHERE ItemCode=?"); 
st.setString(1,itemcode); 
ResultSet rs = st.executeQuery(); 
相关问题