※ ChatGPTを利用し、要約された質問です(原文:メソッド オーバーロード ete)
メソッドオーバーロードとDB接続のまとめ方
このQ&Aのポイント
メソッドオーバーロードとは、同じ名前のメソッドを引数の型や個数で区別して定義する方法です。
DB接続の処理をまとめる際には、selectExecメソッドを使用することでSQL文から要素を取得する方法があります。
hairetuメソッドを使用することで、ArrayListから配列に収納することができます。
こんにちは
今オーバーロードやメソッドについて学習中です
今回作成したのは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;
}
これは却下されました
見づらいとは思いますが いろいろアドバイスください
お礼
int fromIdx int toIdx が逆でした><
補足
すっっごくわかりやすいです!!! 根本的に考え方が間違ってたのがわかりました・・・ int fromIdxの部分で カーソルを最後までいかすにはどうしたらいいかと 試行錯誤しています int toIdxは指定してあげればいいとおもうのですが。 またお時間空いたときよかったらアドバイスください。