2012-11-09 28 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(); 
相關問題