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

私はJavaやODBCに完全には精通していませんが、データベースがスペースを含む列名を親切に受け入れないことは知っています。

列名を角かっこで囲んでみてください。

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

于 2012-11-09T01:43:40.613 に答える
1

私も同じ問題に直面しました。最終的に何も解決しませんでした。データベースでdbフィールド名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 に答える
0

これは、クエリの選択部分で存在しないフィールドを参照する場合にも発生する可能性があります。たとえば、次のようなクエリ。

Select MisSpeltFieldName from tblStuff
于 2013-10-04T11:10:11.347 に答える