• 締切済み

javaでデータベース(mysql)からデータを取得しJTableにinsertする方法が分かりません。

JLabelになら分かるのですがJTableのほうがよく分からないのです。 また、どのように記述すればよいのでしょうか? 参考までにJLabelの方を乗せておきます。 すべては自分の勉強不足が原因なのですが、お分かりになる方はお知恵をお貸し下さい。 private void displayData(){ try { MainMenu mainMenu = new MainMenu(); sqlStr = mainMenu.getSendsqlstr(); System.out.println(sqlStr); //ドライバクラスをロードする Class.forName("com.mysql.jdbc.Driver");//org.gjt.mm.mysql.Driverこっちの可能性もあり //MySQLに接続 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/nelfsystem", "root", "root"); //ステートメント生成 pstmt = (PreparedStatement) con.prepareStatement(sqlStr); //SQL文実行 rs = pstmt.executeQuery(sqlStr); rs.first(); // 最初の行に移動 jLabel30.setText("" + rs.getInt("member_id")); jLabel31.setText(rs.getString("member_name")); jLabel32.setText(rs.getString("member_furigana")); jLabel33.setText(rs.getString("birth_day")); jLabel34.setText(rs.getString("sex")); jLabel36.setText(rs.getString("telephone")); jLabel37.setText(rs.getString("telephone_2")); jLabel29.setText(rs.getString("zipcode")); jLabel38.setText(rs.getString("address")); jLabel39.setText(rs.getString("address_2")); jLabel41.setText(rs.getString("douki")); jLabel40.setText(rs.getString("e_mail")); jTextArea2.setText(rs.getString("remarks")); } catch(Exception ex){ System.out.println("Error:" + ex.toString() + ex.getMessage()); } }

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

noname#94983
noname#94983
回答No.1

MySQLからレコードを取得する方法は既にわかっていて、JTableに値を表示する方法がわからない、ってことだろうか。 JTableに値を表示する場合は、一番簡単なのは表示する値を配列にまとめてnew JTableする際に渡す、というやり方。値を取り出して、二次元配列にまとめてnew JTableのときに引数で渡す。 が、一般的なのは、モデルクラスを定義して、そいつをJTableに設定するやり方だろう。後々を考えると、こっちを採用したほうがいいな。参考URLの記事を参照のこと。

参考URL:
http://allabout.co.jp/internet/java/closeup/CU20080120A/

関連するQ&A

  • AndroidアプリからMySQLのデータ取得

    こんにちは。 今、androidの勉強をしながらアプリを作成しています。 androidやjavaの知識レベルは、初心者レベルです。 タイトルにもあるように、AndroidアプリからMySQLのデータ取得方法がわかりません。 今現在、eclipse内のエミュレータではデータの取得と表示はできています。 しかしながら、実機でテストをすると、データが取れていません。 なにぶん初心者なので、どこを見れば良いか、何を設定すれば好いか、いきあたりばったりでテストしています。皆様のアドバイス宜しくお願いします。 【開発環境】 windowsXP eclipse3.5 mysql5.1(ユーザー、IP、ポート、データベース、テーブルなどは設定済み) jdbc5.1(構成パスにJDBCは追加済み) 【ソース一部抜粋】 public class Prof extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Connection conn = null; Statement stmt = null; ResultSet rs = null; setContentView(R.layout.prof); TextView set_NameLabel = (TextView) findViewById(R.id.set_nameLabel); TextView set_oldLabel = (TextView) findViewById(R.id.set_oldLabel); TextView set_jobLabel = (TextView) findViewById(R.id.set_jobLabel); TextView set_addLabel = (TextView) findViewById(R.id.set_addLabel); TextView set_homeLabel = (TextView) findViewById(R.id.set_homeLabel); TextView set_hobbyLabel = (TextView) findViewById(R.id.set_hobbyLabel); TextView set_comentLabel = (TextView) findViewById(R.id.set_comentLabel); try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://10.0.2.2:3306/prof_db","test_01","test_pass"); stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM my_prof"); rs.next(); set_NameLabel.setText(rs.getString("prof_name")); set_oldLabel.setText(rs.getString("prof_age")); set_jobLabel.setText(rs.getString("prof_occupation")); set_addLabel.setText(rs.getString("prof_address")); set_homeLabel.setText(rs.getString("prof_home")); set_hobbyLabel.setText(rs.getString("prof_hobby")); set_comentLabel.setText(rs.getString("prof_comment")); conn.close(); rs.close(); stmt.close(); } catch (ClassNotFoundException e){ e.printStackTrace(); } catch ( SQLException e) { e.printStackTrace(); }catch (Exception e){ e.printStackTrace(); } } } 何かしらのアドバイス、解決方法、参考HPなど、ご教授宜しくお願いします。

  • MySQL TIMESTAMP型をJavaで取得

    MySQL TIMESTAMP型をJavaで取得すると、秒の部分に小数点が勝手に加えられるのですがそういうものなのでしょうか。 MySQLの値と矛盾しているように思うのですが、お教えください。 (1) MySQLで表示  mysql > select * from ~; +-------+---------------------+ | title | renew_date | +-------+---------------------+ | test | 2014-03-23 21:09:57 | +-------+---------------------+ (2) Javaで表示 … ResultSet rs = stmt.executeQuery("SELECT * FROM ~); while(rs.next()) {   renew_date = rs.getString("renew_date");     } System.out.println("renew_date: " + renew_date); このSystem.out.printlnでは、 +-------+---------------------+ renew_date: 2014-03-23 21:09:57.0 +-------+---------------------+ と出ます。 (1)と(2)にで小数点(最後の秒の部分、 .0 )が異なります。

  • Javaで、TomCatプロジェクトを使用したJDBCを使用したデータベースのアクセスについて教えてください。

    すぐに回答を! TomCatプロジェクトでDBアクセスできず困っています。 ●Javaプロジェクトの場合(成功)  ・Javaプロジェクト作成 → 新規 → クラスを作成。  ・プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー   → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー   → 新規 → MySQLドライバを追加  ・次のソースの実行にて、JDBC Dirverの接続を確認。 [JdbcSample.java] import java.sql.*; class JdbcSample { public static void main(String[] args) { try { // 1.JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 2.データベースへの接続 Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/db1", "(ユーザー名)", "(パスワード)"); // 3.SQL ステートメント・オブジェクトの作成 Statement stmt = con.createStatement(); // 4.SQL ステートメントの発行 ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl"); // 5.結果の出力 while (rs.next()) { System.out.println(rs.getString("allow_null")); } // 6.データベースのクローズ rs.close(); stmt.close(); con.close(); } catch (SQLException e1) { System.out.println( "SQLException: " + e1.getMessage()); System.out.println( " SQLState: " + e1.getSQLState()); System.out.println( " VendorError: " + e1.getErrorCode()); } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); } } } ●TomCatプロジェクト作成の場合(失敗)  (1)TomCatプロジェクト作成 → 新規 → クラスを作成。  (2)プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー   → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー   → 新規 → MySQLドライバを追加  (3)サーブレットからBeanの呼び出し。  「​http://localhost:8080/test_mvc/jdbcSample​」  (4)エラー「Exception: com.mysql.jdbc.Driver」 が発生。(ドライバーが見つかりません?) [servlet] package ne.jp; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestMvc extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { JdbcSample da = new JdbcSample(); try { da.dbAccessTest(); (※)←ここでBeanのデータベースアクセスメソッドを呼び出し } catch (Exception e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } // HTML出力の準備 response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html><body><p>こんにちわ!</p></body>"); } } [Bean] package ne.jp; import java.sql.*; class JdbcSample { //Beanコンストラクタ public JdbcSample(){ } //データベースアクセス確認 public void dbAccessTest(){ try { // 1.JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 2.データベースへの接続 Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/db1", "***", "*****"); // 3.SQL ステートメント・オブジェクトの作成 Statement stmt = con.createStatement(); // 4.SQL ステートメントの発行 ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl"); // 5.結果の出力 while (rs.next()) { System.out.println(rs.getString("allow_null")); } // 6.データベースのクローズ rs.close(); stmt.close(); con.close(); } catch (SQLException e1) { System.out.println( "SQLException: " + e1.getMessage()); System.out.println( " SQLState: " + e1.getSQLState()); System.out.println( " VendorError: " + e1.getErrorCode()); } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); } } }

    • ベストアンサー
    • Java
  • JListに一覧にして表示

    データベースから取得した結果を JListに一覧にして表示させたいのですが、 list.setText(table);の部分の setTextメソッドでシンボルが見つけられないと エラーが出てしまいます。 JListにsetTextを使っているからなのだと思いますが、 APIを探したのですがなかなかわかりません どう対処したらよいでしょうか?? private Connection connect() throws Exception{ Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/???"; String user = "root"; String pass = ""; Connection con = DriverManager.getConnection(url,user,pass); return con; } Bookmark(){ JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.addTab("表示", createPanel1()); } private JPanel createPanel1(){ JPanel p = new JPanel(); JList list = new JList(); JScrollPane scrollPane = new JScrollPane(); scrollPane.getViewport().setView(list); scrollPane.setPreferredSize(new Dimension(480, 340)); p.add(scrollPane); try{ //DBに接続 Connection con = connect(); //SQL発行先ほど指定したConnection con を利用 Statement stmt = con.createStatement(); String sql ="select * from Browser"; ResultSet rs = stmt.executeQuery(sql); //結果の取得 while(rs.next()){ String name = rs.getString("name"); String address = rs.getString("address"); String table = "<html><table>" + "<td>" + name + "</td>"+ "<td>"+ address +"</td>"+ "</table></html>"; list.setText(table); } //切断 con.close(); } catch(Exception ex) { System.out.println(ex);

    • ベストアンサー
    • Java
  • JAVAからMYSQL使用時のキャッシュ無効化方法

    以下のようにJAVAからMYSQLを使っています。 しかし、30秒おきに使用しているSQL文の結果がDBを更新してもかわりません。 おそらく、javaまたはMYSQLでキャッシュが残っているためだと思うのですが、その無効化方法がわかりません。 その無効化方法のご教授をお願い申し上げます。 //MYSQLの各種設定 public onlineCycleChkDao() { // JDBCドライバの指定 this.driver = "com.mysql.jdbc.Driver"; // データベースの指定 this.server = "xxxx"; // MySQLサーバ ( IP または ホスト名 ) this.dbname = "xx"; // データベース名 this.url = "jdbc:mysql://" + server + "/" + dbname + "?useUnicode=true&characterEncoding=UTF8"; this.user = "xxxxxx"; // データベース作成ユーザ名 this.password = "xxxxxx"; // データベース作成ユーザパスワード DBcon(); try{ stmt = con.createStatement(); } catch(SQLException e){ System.err.println("SQL failed."); e.printStackTrace(); System.exit(2); } } private void DBcon(){ try{ // JDBCドライバの登録 Class.forName(this.getDriver()); // データベースとの接続 con = DriverManager.getConnection(getUrl(), getUser(), getPassword()); con.setAutoCommit(false); } catch(SQLException e){ System.err.println("SQL failed."); e.printStackTrace(); System.exit(2); } catch(ClassNotFoundException ex){ ex.printStackTrace(); System.exit(2); } } public void closeConnection(){ // コネクション切断 try{ con.close(); } catch(SQLException e) { System.out.println("MySQL Close error."); } } //サイクルSQL private long selectMaxSeqNo(String table){ long maxSeqNo = -1; try{ ResultSet rs; String sql; sql = "SELECT SQL_NO_CACHE SEQ_NO, NOW() FROM " + table ; //ここの取得結果が更新されません。対象テーブルは他のプログラムにて更新 sql += " ORDER BY RGST_TIME DESC limit 1;"; rs = stmt.executeQuery(sql); System.out.println(sql); while(rs.next()){ maxSeqNo = rs.getInt("SEQ_NO"); } rs.close(); } catch(SQLException e){ System.err.println("SQL failed."); e.printStackTrace(); System.exit(2); } System.out.println("seqNo:" + maxSeqNo); return(maxSeqNo); } public ArrayList<Long> selectMaxSeqNoList(){ //対象テーブルから最新のシーケンスNoリストを取得する。 ArrayList<Long> seqNoList = new ArrayList<Long>(); for(String Table : TableList){ //最新のシーケンスNo取得 long recentSeqNo = selectMaxSeqNo(Table); seqNoList.add(recentSeqNo); } return(seqNoList); }

    • ベストアンサー
    • Java
  • javaでMySQLのデータ検索

    以下のサイトでただいま勉強しています。環境はMySQL4.0.15です。 http://msugai.fc2web.com/java/JDBC/mmMySQL.html ●JDBC ソースコードのところでつまづいています。 javaの実行 C:\java>java JdbcSample Exception: com.mysql.jdbc.Driver java.lang.ClassNotFoundException: com.mysql.jdbc.Driver  … // 1.JDBC Driver の登録 // 2.データベースへの接続 のあたりでエラーが発生している状態です。データベースの接続はAccess環境なら『コントロールパネル』→『管理ツール』→『データソース(ODBC)』で使用するデータベースを設定します。MySQLもこのあたりの設定が必要なんでしょうか? ●Accessの場合 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection Con = DriverManager.getConnection("jdbc:odbc:設定したデータベース名"); アドバイスお願いします。

  • MySQLのblob型の日本語文字列を取得すると文字化けする

    MySQLに接続し、Blob型の日本語データを取得したのですが、 文字化けしてしまいます。 new Stringを使っているのですが、うまくいきません。 今は以下のような流れになっております。 まずstr_orgにデータを格納して、次にnew Stringで変換してstr_chgに格納しております。 しかしstr_chgの文字列が文字化けしてしまいます。 何が原因か分かりますでしょうか? ちなみに現在は、my.confで[default-character-set=]の設定はは行なっておりません。 String url = "jdbc:mysql:///DATABASE?useUnicode=true"; String usr = args[0]; String pwd = args[1]; Srting key = args[2]; Connection con = DriverManager.getConnection(url,usr,pwd); PreparedStatement pstmt; pstmt = con.prepareStatement("SELECT * from quote_hdr WHERE qh_id = ?"); pstmt.setString(1,key); rs = pstmt.executeQuery(); String str_org = rs.getString("qh_cmts"); String str_chg = new String(qh_cmts.getBytes("8859_1"));

  • mysqlへの接続が出来ません

    まずは、サンプルプログラミングをコピーして実行してみましたが、上手くいきません。 package Connection; import java.sql.*; public class DBtest { public static void main(String[] args) { //java.sql Connection con = null; Statement stmt = null; ResultSet rs = null; String sqlStr; try { //ドライバクラスをロードする Class.forName("org.gjt.mm.mysql.Driver"); //MySQLに接続 con = DriverManager.getConnection("jdbc:mysql://localhost/dbname", "8080", "password"); //ステートメント生成 stmt = con.createStatement(); //SQL文 sqlStr = "SELECT * FROM TABLE"; //SQL文実行 rs = stmt.executeQuery(sqlStr); //検索結果数だけループ while(rs.next()){ //レコードの値 int id = rs.getInt("ID"); String name = rs.getString("NAME"); //表示 System.out.println(id + ":" + name); } //クローズ rs.close(); stmt.close(); con.close(); } catch (Exception ex) { try { //クローズ if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (con != null) con.close(); } catch (Exception e) { } //エラー ex.printStackTrace(); } } } 上記はEclipseでは文法エラーはありません。で実行してみると java.sql.SQLException: Access denied for user '8080'@'localhost' (using password: YES)になります。 サンプルにはDbname、ID,Passとあるので実際のDbnameとパスワードを入れているのですが駄目です。 IDは意味が良くわからないので8080を入れてみました。 どなたか教えて下さい。お願いします。 尚、当方全くの初心者です宜しくお願い致します。

    • ベストアンサー
    • Java
  • JDBC PostgreSQLで必要なファイルはあるのでしょうか?

    LinuxでPostgreSQLのデータベースをJDBCでアクセスしたいのですが、以下のソースで次のエラーが発生します。何か必要なファイルでもあるのでしょうか? java.lang.ClassNotFoundException:org.postgres.Driver また、LinuxのODBCも必要なファイルがあるのでしょうか? import java.sql.*; class jdbcSample2 { public static void main(String argv[]) { int a; String b; try { //Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver"); //String url = "jdbc:odbc:test"; Class.forName ("org.postgres.Driver"); String url = "jdbc:postgresql://127.0.0.1:5432/test"; String user = ""; String password = ""; Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement (); String query = "select * from member;"; ResultSet rs = stmt.executeQuery (query); while(rs.next()){ a = rs.getInt(1); b = rs.getString(2); System.out.println(a + ", " + b); } rs.close(); stmt.close(); con.close(); } catch (SQLException ex) { System.err.println("SQL failed."); ex.printStackTrace (); } catch (Exception ex) { ex.printStackTrace (); } } }

  • javaからmysqlに接続ができません。

    よろしくお願いします。 JavaからMySqlに接続ができなくて困っています。 <環境> OS:Windows XP JDK : jdk1.6.0_02 JDBC Driver for MySQL : mysql-connector-java-5.1.5-bin.jar Java、MySql単体では正常に動作しているようですが、ドライバを認識できず、JavaからMySqlに接続することができません。 ---コード------------------------------------------ import java.net.*; import java.sql.*; public class SqlSample1{ String url = "jdbc:mysql://localhost/test_db"; String user = "root";//ユーザ名 String pass = "admin";//パスワード Connection con = null; //コンストラクタ public SqlSample1(){ init();//初期化 fin();//終了 } //初期化 public void init(){ try{ //ドライバのロード Class.forName("org.gjt.mm.mysql.Driver"); //MySQLサーバへの接続 con = DriverManager.getConnection(url,user,pass); System.out.println("Connected!!"); }catch(SQLException e){ System.err.println("SqlException:\n"+e.toString()); }catch(Exception e){ e.printStackTrace(); } } //終了:開放 public void fin(){ try{ con.close(); System.out.println("Closed."); }catch(SQLException e){ System.err.println("SqlException:\n"+e.toString()); }catch(Exception e){ e.printStackTrace(); } } public static void main(String args[]){ SqlSample1 ss1=new SqlSample1(); } } ----------------------------------------------------------- ----エラーメッセージ--------------------------------------- SqlException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure Last packet sent to the server was 0 ms ago. java.lang.NullPointerException at SqlSample1.fin(SqlSample1.java:41) at SqlSample1.<init>(SqlSample1.java:18) at SqlSample1.main(SqlSample1.java:53) ------------------------------------------------------------ ※C:\mysql-connector-java-5.1.5の下のmysql-connector-java-5.1.5-bin.jarファイルにCLASSPATHを設定しています。 初心者のためへたくそな質問になっているかもしれません。 申し訳ありません。 上記の情報が不十分な場合はご指摘をお願い致します。

専門家に質問してみよう