javaでmysqlからデータを読み込むクラスを作っています。
実行ログを見ると2件目までしかロードしなく、データベースの終了すら見れません。
どなたかご教授ください。
javaのクラスのソースです。
package kadai15;
import java.sql.*; //SQLに関連したクラスライブラリをインポート
public class Dbaccess {
/* 1. フィールドの定義 */ protected int[] id = new int[2]; // protected String[] name = new String[10]; // protected String[] log = new String[10]; // protected String[] lat = new String[10]; protected String[] log2 = new String[10]; protected String[] lat2 = new String[10]; protected int[] his = new int[100]; protected int num = 0; //データ取得件数 /* 2. メソッド */
/* 2.1 データベースからのデータ取得メソッド /
public void dataload() throws Exception { //エラー処理が必要にする
System.out.println("dataload接続成功");
/ 2.1.1 データベースに接続 */
//num=0; //取得件数の初期化
Class.forName("com.mysql.jdbc.Driver").newInstance(); //com.mysql.jdbc.Driverはドライバのクラス名
System.out.println("テスティング1");
String url = "jdbc:mysql://localhost/softd1?characterEncoding=UTF-8"; //schoolがデータベース名:文字エンコードはUTF-8
System.out.println("テスティング2");
Connection conn = DriverManager.getConnection(url, "root", "nakaguti"); //上記URL設定でユーザ名とパスワードを使って接続
System.out.println("テスティング3");
/* 2.1.2 SELECT文の実行 */ String sql = "SELECT * FROM course where id = 4 limit 2"; //SQL文の設定 ?などパラメータが必要がない場合は通常のStatementを利用 PreparedStatement stmt = conn.prepareStatement(sql); //JDBCのステートメント(SQL文)の作成 ResultSet rs = stmt.executeQuery(); //ステートメントを実行しリザルトセットに代入 /* 2.1.3 結果の取り出しと表示 */
/while (rs.next()) { //リザルトセットを1行進める.ない場合は終了
System.out.println(num+"回目の読み込み");
this.id[num] = rs.getInt("id");
System.out.("id:"+this.id[num]);
this.name[num] = rs.getString("name");
this.log[num] = rs.getString("log");
this.lat[num] = rs.getString("lat");
this.log2[num] = rs.getString("log2");
this.lat2[num] = rs.getString("lat2");
System.out.println("lat2:"+this.lat2[num]);
this.his[num] = rs.getInt("his");
System.out.println("his:"+this.his[num]);
num++;
}/
while (rs.next()) { //リザルトセットを1行進める.ない場合は終了
this.id[num] = rs.getInt("id");
System.out.println("id?" + this.id[num]);
this.name[num] = rs.getString("name");
System.out.println("name?" + this.name[num]);
this.log[num] = rs.getString("log");
System.out.println("log?" + this.log[num]);
this.log2[num] = rs.getString("log2");
System.out.println("log2?" + this.log2[num]);
this.lat[num] = rs.getString("lat");
System.out.println("lat?" + this.lat[num]);
this.lat2[num] = rs.getString("lat2");
System.out.println("lat2?" + this.lat2[num]);
this.his[num] = rs.getInt("his");
System.out.println("his?" + this.his[num]);
num++;
}
/* 2.1.4 データベースからの切断 */ rs.close(); //開いた順に閉じる System.out.println("closeテスト1"); stmt.close(); System.out.println("close2"); conn.close(); System.out.println("close3"); } /* 2.2 データベースへのインサートメソッド */ public int insert(int id, String name, String log, String lat, String log2, String lat2, int his) { int count = 0; //登録件数のカウント try { /* 2.2.1 データベースに接続 */ Class.forName("com.mysql.jdbc.Driver").newInstance(); // SELECTの時と同じ String url = "jdbc:mysql://localhost/softd1?characterEncoding=UTF-8"; Connection conn = DriverManager.getConnection(url, "root", "nakaguti"); /* 2.2.2 INSERT文の実行 */ String sql = "INSERT INTO student (id,name,log,lat,log2,lat2,his) VALUES (?,?,?,?,?,?,?)"; //SQL文の設定 INSERTはパラメータが必要なことが多い PreparedStatement stmt = conn.prepareStatement(sql); //JDBCのステートメント(SQL文)の作成 stmt.setInt(1, id); //1つ目の?に引数をセットする stmt.setString(2, name); //2つ目の?に引数をセットする stmt.setString(3, log); stmt.setString(4, lat); stmt.setString(5, log2); stmt.setString(6, lat2); stmt.setInt(7, his); /* 2.2.3 実行(UpdateやDeleteも同じメソッドを使う) */ count = stmt.executeUpdate(); /* 2.2.4 データベースからの切断 */ stmt.close(); conn.close(); return count; } catch (Exception e) { return 0; } } /* 3. アクセッサ */
/* 3.1 Getアクセッサ */
public int getId(int i) {
if (i >= 0 && num > i) {
return id[i];
} else {
return 0;
}
}
public String getName(int i) { if (i >= 0 && num > i) { return name[i]; } else { return ""; } } public String getlog(int i) { if (i >= 0 && num > i) { return log[i]; } else { return null; } } public String getlat(int i) { if (i >= 0 && num > i) { return lat[i]; } else { return null; } } public String getlog2(int i) { if (i >= 0 && num > i) { return log2[i]; } else { return null; } } public String getlat2(int i) { if (i >= 0 && num > i) { return lat2[i]; } else { return null; } } public int getHis(int i) { if (i >= 0 && num > i) { return his[i]; } else { return 0; } } public int getNum() { return num; // データ件数 }
}
次にシステムアウトの結果です。
テスティング1
テスティング2
テスティング3
id?1
name?駅1
log?39.80
log2?39.79
lat?141.13
lat2?141.14
his?0
id?2
name?駅2
log?39.80
log2?39.74
lat?141.13
lat2?141.12
his?0
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/02/08 08:44
2016/02/08 14:28