- PR -

ArrayListに保存したデータレコードを取得するには。。。

投稿者投稿内容
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-03-09 09:20
で、解決したでしょうか?
解決したのであれば、後で読む人のためにも、自分の整理のためにも結果をまとめてみてはいかがでしょう。
Chumomo
常連さん
会議室デビュー日: 2005/03/04
投稿数: 33
投稿日時: 2005-03-09 09:23
引用:

あとは・・・これでソースは全部ですか?
mlist のインスタンスを生成してないので
エラーになると思いますけど?



ご説明ありがとうございます。それはすべてのコードですが、「mlist のインスタンスを生成してない」について、よく分かりませんが。よろしければ、もっと詳しくご説明いただけませんか。
Chumomo
常連さん
会議室デビュー日: 2005/03/04
投稿数: 33
投稿日時: 2005-03-09 09:24
引用:

インギさんの書き込み (2005-03-08 15:29) より:
ひとまずTomcat/Servletから離れて単体で動くクラスを作ってみてはいかがでしょうか?
残念ながらまだWebアプリケーションを作るまでの応用力がなさそうです。
まずはJavaの基本構文、APIの見方、JDBCプログラミングの基本などを学びましょう。



そうですね、頑張りましょう~
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-03-09 10:00
引用:

ご説明ありがとうございます。それはすべてのコードですが、「mlist のインスタンスを生成してない」について、よく分かりませんが。よろしければ、もっと詳しくご説明いただけませんか。


「インスタンス生成」すらもわかっていないということは、
掲示板でどうのこうのする以前の問題だと思います。

まずは、何でもいいから入門書を1冊、勉強してください。
がんばってくださいね。

[ メッセージ編集済み 編集者: Edosson 編集日時 2005-03-09 10:07 ]
パテ太
ベテラン
会議室デビュー日: 2004/08/16
投稿数: 64
お住まい・勤務地: 千葉・東京
投稿日時: 2005-03-09 10:07
引用:

ご説明ありがとうございます。それはすべてのコードですが、「mlist のインスタンスを生成してない」について、よく分かりませんが。よろしければ、もっと詳しくご説明いただけませんか。


単純に申しますと
引用:

mlist.add(ta);


が実行されるより前に
コード:
    ArrayList mlist = new ArrayList();


という記述がないと mlist が ArrayList を
参照していないので mlist.add(ta) が失敗します。
ということです。
Chumomo
常連さん
会議室デビュー日: 2005/03/04
投稿数: 33
投稿日時: 2005-03-09 10:36
引用:

という記述がないと mlist が ArrayList を
参照していないので mlist.add(ta) が失敗します。
ということです。



ご返答ありがとうございます。
実はmlistはフィールド変数として、プログラムの最初の部分で定義しました。いまはexecuteの部分を書き直して、「

public ArrayList execute()
{
try
{

Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/chumomosite?useUnicode=true&characterEncoding=Shift-JIS","root","1234");

Statement stmt=con.createStatement();
rs=stmt.executeQuery("select * from item");

while (rs.next())
{
Kit ta=new Kit();
ta.id=rs.getInt("id");
ta.name=rs.getString("name");
ta.price=rs.getInt("price");
ta.detail=rs.getString("detail");
ta.picture=rs.getString("picture");

mlist.add(ta);
}
return this.mlist;

}
catch(SQLException ex)
{
ex.printStackTrace();
}
catch(Exception ex)
{
// TODO Auto-generated catch block
ex.printStackTrace();
}
}

のようにしました。しかし、「this method must return a result of type ArrayList」というエラーが出てきました。確かに「return mlist;」と記述したのに、そのエラーはいったいどういうことでしょうか。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-03-09 10:50
一度に考えることは、ひとつだけになさい。
あなたに、2コ以上の脳ミソがあるのなら別ですがね。
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2005-03-09 10:59
メソッドの一番最後にreturnがないからです。
あなたのプログラムはcatchでprintStackTraceを行った後そのままメソッドの処理が継続する為、最後にreturnでArrayListを返却する必要があります。
そのような処理なら通常tryの中ではなくメソッドの最後にreturnを書きましょう。
皆さんも書かれているので余計な事だとは思いますが、基本的な事を一から学ぶ必要があると思います。

スキルアップ/キャリアアップ(JOB@IT)