JDBCでSQL送信したときに結果がうまく帰ってきません。 原因を教えていただけないでしょうか。 getProduct_name = "iphone6"です。 mysqlを使っています。
該当のソースコード
public class ProductDAO { // データベース接続に使用する情報 private String url = "jdbc:mysql://localhost/gwec"; private String id = "root"; private String pass ="1qaz2wSX?"; PreparedStatement pStmt; Connection conn; public DetailProduct getProductDetail(String getProduct_name) { //商品詳細データの習得 DetailProduct detailProduct = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url,id,pass); //SELECT文を準備 String sql = "select ProductTbl.product_name,ProductTbl.product_price,CategoryTbl.category_name,StockTbl.stock,ProductTbl.product_detail,ProductTbl.product_img"; sql += " from ProductTbl inner join StockTbl on ProductTbl.product_id = StockTbl.product_id inner join CategoryTbl"; sql += " on ProductTbl.category_id = CategoryTbl.category_id WHERE ProductTbl.product_name = ?;"; pStmt = conn.prepareStatement(sql); pStmt.setString(1, "%" + getProduct_name + "%"); //SELECT文を実行し結果表を作成 ResultSet rs = pStmt.executeQuery(); //一致した商品があった場合Productインスタンスを生成 if(rs.next()) { String product_name = rs.getString("product_name"); int product_price = rs.getInt("product_price"); String category_name = rs.getString("category_name"); int stock = rs.getInt("stock"); String product_detail = rs.getString("product_detail"); String product_img = rs.getString("product_img"); detailProduct = new DetailProduct(product_name,product_price,category_name,stock,product_detail,product_img); } } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } finally { try { if(conn != null) conn.close(); if(pStmt !=null) pStmt.close(); return detailProduct; } catch (Exception ex) {} } return detailProduct; } } mysql> select ProductTbl.product_name,ProductTbl.product_price,CategoryTbl.category_name,StockTbl.stock,ProductTbl.product_detail,ProductTbl.product_img from ProductTbl inner join StockTbl on ProductTbl.product_id = StockTbl.product_id inner join CategoryTbl on ProductTbl.category_id = CategoryTbl.category_id WHERE ProductTbl.product_name = 'iphone6'; +--------------+---------------+---------------+-------+--------------------+-------------+ | product_name | product_price | category_name | stock | product_detail | product_img | +--------------+---------------+---------------+-------+--------------------+-------------+ | iphone6 | 600 | Iphone | 30 | 少し古いiphoneです | iphone6 | +--------------+---------------+---------------+-------+--------------------+-------------+
試したこと
rs.next()の値はfalse
sqlをコピペしmysqlで実行すると値は正常に返ってくる
補足情報(FW/ツールのバージョンなど)
mysql バージョン 8.0
Eclipse 4.8.0
Tomcat9
java10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/21 11:58