メソッド オーバーロード ete
こんにちは
今オーバーロードやメソッドについて学習中です
今回作成したのはDB接続の 処理をするほうのクラスなのですが
同じソースはひとつにまとめろといわれました
自分なりに メソッドを作ってまとめてみたのですが
まだだめなようです
あとどのようにまとめれば 良いとおもいますか?
例文なども出していただけると助かります
一部ソースのせます
public String[][] selectExec(String sql, int fromIdx) throws SQLException{
Statement smt = con.createStatement();
//ステートメントオブジェクト作成 SQL文を送るために作成
ResultSet aa=smt.executeQuery(sql);
//SQLから要素取得
ArrayList<String> TESTNO = new ArrayList<String>();
//TESTNO用のArrayList作成
ArrayList<String> NAME = new ArrayList<String>();
//NAME用
ArrayList<String> KANA = new ArrayList<String>();
//KANA用
aa.relative(fromIdx-1);
//カーソルの位置を移動
while(aa.next()){
TESTNO.add(aa.getString("TESTNO"));
NAME.add(aa.getString("NAME"));
KANA.add(aa.getString("KANA"));
}
aa.close(); //使い終わったリザルトクローズ
smt.close(); //ステートメントクローズ //オブジェクトの解放
hairetu(TESTNO,NAME,KANA); //配列に収納するメソッド呼び出し
return hairetu(TESTNO,NAME,KANA);
}
/*
* すべての行を取得
*/
public String[][] selectExec(String sql) throws SQLException{
Statement smt = con.createStatement();
//ステートメントオブジェクト作成 SQL文を送るために作成
ResultSet aa=smt.executeQuery(sql);
//SQLから要素取得
ArrayList<String> TESTNO = new ArrayList<String>();
//TESTNO用ののArrayList作成
ArrayList<String> NAME = new ArrayList<String>();
//KAME用
ArrayList<String> KANA = new ArrayList<String>();
//KANA用
while(aa.next()){ //Resultsetが最終行になるまで実行
TESTNO.add(aa.getString("TESTNO"));
NAME.add(aa.getString("NAME"));
KANA.add(aa.getString("KANA"));
}
aa.close(); //使い終わったリザルトクローズ
smt.close(); //ステートメントクローズ //オブジェクトの解放
return hairetu(TESTNO,NAME,KANA);
}
/*
* 指定された行から行を取得
*/
public String[][] selectExec(String sql, int fromIdx,int toIdx) throws SQLException{
Statement smt = con.createStatement();
//ステートメントオブジェクト作成 SQL文を送るために作成
ResultSet aa=smt.executeQuery(sql);
//SQLから要素取得
ArrayList<String> TESTNO = new ArrayList<String>();
//TESTNO用ののArrayList作成
ArrayList<String> NAME = new ArrayList<String>();
//NAME用
ArrayList<String> KANA = new ArrayList<String>();
//KANA用
aa.relative(fromIdx);
while(fromIdx<=toIdx){
TESTNO.add(aa.getString("TESTNO"));
NAME.add(aa.getString("NAME"));
KANA.add(aa.getString("KANA"));
aa.next();
fromIdx++;
}
aa.close(); //使い終わったリザルトクローズ
smt.close(); //ステートメントクローズ //オブジェクトの解放
return hairetu(TESTNO,NAME,KANA);
}
public String[][] hairetu(ArrayList T,ArrayList N ,ArrayList K){
String[][]all=new String[3][T.size()];
all[0] = (String[])T.toArray(new String[0]);//配列TSETNOに収納
all[1] = (String[])N.toArray(new String[0]);//配列NAMEに収納
all[2] = (String[])K.toArray(new String[0]);//配列KANAに収納
return all;
}/*
リストから配列に収納するメソッド。
配列でリターンします
*/
下のhairetuメソッドはあとから作成しました。
もうひとつ作ったのですが
TEST(TESTNO,aa,"TESTNO");
TEST(NAME,aa,"NAME");
TEST(KANA,aa,"KANA");
呼び出し↑
メソッド
public ArrayList TEST(ArrayList T,ResultSet a ,String s) throws SQLException{
T.add(a.getString(s)); // リストにSQL文を収納
return T;
}
これは却下されました
見づらいとは思いますが いろいろアドバイスください
補足
回答ありがとうございます! >javaからではなく、直接SQLでデータを表示したらどうなりますでしょうか。 直接だと以下のように出ます。 ↓ mysql> select * from entry; +------+----------+----------------------------------+--------------+----------------+--------------+ | id | provider | url | blogid | account | password | +------+----------+----------------------------------+--------------+----------------+--------------+ | 001 | fc2 | http://blog.fc2.com/xmlrpc.php | 1192sasagawa | ●● | ●● | | 002 | goo | http://blog.goo.ne.jp/xmlrpc.php | 0 | ●● | ●● | +------+----------+----------------------------------+--------------+----------------+--------------+ >あとはresultで以下のようにnextして読んでみてください。 > >ResultSet rs = st.executeQuery("・・・"); > >while(rs.next()) { すみません。 あまり文章が長くならないように、ソースを端折って記載しました。 長くなりますが、現在のソースはこんな感じです。 Connection users = SQL.getConnection(); Statement state = users.createStatement(); ResultSet result = state.executeQuery("select * from entry"); String[][] para = new String[2][6]; int i = 0; while (result.next()) { String id = result.getString("id"); String provider = result.getString("provider"); String url = result.getString("url"); String blogid = result.getString("blogid"); String account = result.getString("account"); String password = result.getString("password"); para[i][0] = id; para[i][1] = provider; para[i][2] = url; para[i][3] = blogid; para[i][4] = account; para[i][5] = password; System.out.println(para[i][0]); System.out.println(para[i][1]); System.out.println(para[i][2]); System.out.println(para[i][3]); System.out.println(para[i][4]); System.out.println(para[i][5]); i++; } for (int h = 0; h < 2; h++) { for (int j = 0; j < 6; j++) { System.out.println(para[h][j]); } } > >blogidに特定の値を許さない制約が無いかも気になります。 > gooのブログなんですが、goo自体が0の値を入れてアクセスするよう 発表している?(おそらく)ので、0の値を入れています。 何か分かりましたらご教授お願いします。