- ベストアンサー
データベースをランダムで読み込む
[j2SE] Swingでアプリケーションを作っています。 問題集ソフトを作っており、データベースはAccessで作りました。 これを30問分構築しています。 画面のボタンをクリックする度に次の問題をランダムで表示したいのですが、記述が全く分からず困ってしまいました。 下記が現時点でボタンをクリックした時に設定してあるプログラムです。 //データベースに接続する(JDBC->ODBC) try { Connection myCon = null; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); myCon = DriverManager.getConnection("jdbc:odbc:mondai"); Statement mySt = myCon.createStatement(); //データベースからデータを取得する。(SQLのSELECT文) ResultSet myRs = mySt.executeQuery("SELECT * FROM PERSONAL_DATE"); long id = myRs.getLong("ID"); String mon = myRs.getString("問題"); mondai.setText(mon); String senA = myRs.getString("選択支A"); sentaku1.setText(senA); String senB = myRs.getString("選択支B"); sentaku2.setText(senB); String senC = myRs.getString("選択支C"); sentaku3.setText(senC); String senD = myRs.getString("選択支D"); sentaku4.setText(senD); } catch (Exception ex) { }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
30問ランダムに取ってくるにしてもIDの付け方によって取り方が変わってくると思います。 IDが連番かつ欠落がないならば#1さんのやり方で十分だと思います。 しかしIDがランダムについていたりする場合はちょっと考えなければならないですね。 ちなみにボタンを押すたびに問題を取得するのではなく、始める際に全て取得しておく方が効率的です。(メモリの消費は多くなりますが) その際は1問ずつをクラス化し、ArrayListなどに格納していくといいでしょう。
その他の回答 (1)
- anmochi
- ベストアンサー率65% (1332/2045)
Random r = new Random(System.currentTimeMillis()); int i = r.nextInt(); これでランダムなintが取れるので、それをキー(" where ID=" + i)にDBからSelect してきたら良いのでは。