前提・実現したいこと
EclipseからMySQLへ接続し、データベース上のデータをSELECTするテストを行っております。
発生している問題
MySQLへの接続は正常に行えているが、While文の結果のsysoutがコンソールに表示されない。
該当のソースコード
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test2{
public static void main( String args[] ) throws Exception { String databasename = "Test"; String user = "root"; String password = "password"; String url = "jdbc:mysql://localhost:3306/" + databasename + "?characterEncoding=UTF-8&serverTimezone=JST"; Connection con = null; try { Class.forName("com.mysql.cj.jdbc.Driver").newInstance(); con = DriverManager.getConnection( url, user, password ); System.out.println("MySQLに接続できました。"); Statement stm = con.createStatement(); String sql = "SELECT id, name FROM member"; ResultSet rs = stm.executeQuery(sql); while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("取得結果 -> " + id + ":" + name); } } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { System.out.println("JDBCドライバのロードに失敗しました。"); } catch (SQLException e) { System.out.println("MySQLに接続できませんでした。"); } finally { if (con != null) { try { con.close(); } catch (SQLException e) { System.out.println("MySQLのクローズに失敗しました。"); } } } }
}
試したこと
・System.out.println("MySQLに接続できました。");
→実行時、コンソールに表示されています。
しかし、ただ流れているだけかもしれない。
・"SELECT id, name FROM member";
→DB Viewで試したところ、正常にSELECTされます。(つまりSQLの構文も問題なし)
更新
While文を下記のとおりif文に変更して試す
if(rs.next()){
int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("取得結果 -> " + id + ":" + name); }else{ System.out.println("else"); }
→コンソール:elseが返ります。
rsの中に何も入っていないということでしょうか。SQL自体は正常に動きます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。