前提・実現したいこと
前提:下記のコードで今MySQLからテーブル(データ)が取れています。
実現したいこと:これにもうひとつ別のテーブルを取りたいのですが、どこに何を書けば取れるのでしょうか。(エクリプスのコンソール画面に表示させたいです。)
発生している問題
2つのテーブルを表示させることができない。
試したこと
同じようなコードがないかの検索等
補足情報
MySQLのデータベース
エクリプス
を使用しております。
java
1package sbsample2; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.ResultSet; 6import java.sql.SQLException; 7import java.sql.Statement; 8import java.util.ArrayList;
コード
public class Dbsampless { public static void main(String[] args) { String url = "ディレクトリ"; String user = "ユーザ名"; String password = "パスワード"; Connection con = null; Statement ste = null; ResultSet res = null; try { con = DriverManager.getConnection(url,user, password); System.out.println("接続できました。"); ste=con.createStatement(); String sqlStr = "SELECT id, name, age, position, updatetime FROM sample ORDER BY id;"; res = ste.executeQuery(sqlStr); ArrayList li = new ArrayList(); while (res.next()){ Dbsampless2 db2 = new Dbsampless2(); db2.setId(res.getInt(1)); db2.setName(res.getString(2)); db2.setAge(res.getInt(3)); db2.setPosition(res.getString(4)); db2.setUpdatetime(res.getDate(5)); li.add(db2); } for(int i =0 ; i<li.size() ; i++) { Dbsampless2 db3 = (Dbsampless2) li.get(i); li.get(i); System.out.print(db3.getId()+";"); System.out.print(db3.getName()+";"); System.out.print(db3.getAge()+";"); System.out.print(db3.getPosition()+";"); System.out.print(db3.getUpdatetime()+";"); System.out.println(); } } catch (SQLException e) { System.out.println("接続できませんでした。"); e.printStackTrace(); } finally { try { if (res != null) { res.close(); } if(ste != null) { ste.close(); } if(con != null) { con.close(); System.out.println("閉じました。"); } } catch (SQLException e) { System.out.println("クローズに失敗しました。"); } } } }
java
1package sbsample2; 2 3import java.util.Date; 4 5public class Dbsampless2 { 6 7 private int id; 8 private String name; 9 private int age; 10 private String position ; 11 private Date updatetime; 12 13 public int getId() { 14 return id; 15 } 16 public void setId(int id) { 17 this.id = id; 18 } 19 public String getName() { 20 return name; 21 } 22 public void setName(String name) { 23 this.name = name; 24 } 25 public int getAge() { 26 return age; 27 } 28 public void setAge(int age) { 29 this.age = age; 30 } 31 public String getPosition() { 32 return position; 33 } 34 public void setPosition(String position) { 35 this.position = position; 36 } 37 public Date getUpdatetime() { 38 return updatetime; 39 } 40 public void setUpdatetime(Date updatetime) { 41 this.updatetime = updatetime; 42 } 43}
sql
1mysql> select * from sample; 2+------+--------+------+-----------+------------+ 3| id | name | age | position | updatetime | 4+------+--------+------+-----------+------------+ 5| 1 | 石田 | 25 | 社長 | 2019-03-21 | 6| 2 | 斉藤 | 23 | 副社長 | 2019-03-21 | 7| 3 | 秋山 | 24 | 部長 | 2019-03-21 | 8| 4 | 迫田 | 24 | 係長 | 2019-03-21 | 9+------+--------+------+-----------+------------+ 104 rows in set (0.00 sec) 11 12mysql> select * from sample2; 13+------+--------+------+----------+------------+ 14| id | name | age | position | updatetime | 15+------+--------+------+----------+------------+ 16| 1 | 岸田 | 22 | 係長 | 2019-03-21 | 17+------+--------+------+----------+------------+
sql
1mysql> create table sample(id int,name varchar(20),age int,position varchar(20) ,date date);
sql
1mysql> create table sample2(id int, name varchar(20), age int, position varchar(20) , updatetime date);
sql
1insert into sample(id, name, age, position, updatetime)values(1, '石田', 25, ' 社長', '2019-03-21'),(2, '斉藤', 23, ' 副社長', '2019-03-21'),(3, '秋山', 24, ' 部長', '2019-03-21'),(4, '迫田', 24, ' 係長', '2019-03-21');
sql
1insert into sample(id, name, age, position, updatetime)values(1, '岸田', 22, ' 係長', '2019-03-21');
「MySQL」一つの単語を、全角半角混ざって表現することに気持ち悪さを持たないことがバグだと思います。
コードはマークダウンのcode機能を利用してご提示ください。
>もうひとつ別のテーブルを取りたい
そのテーブルが今現在とれているというテーブルとはどういう関係性にあるのでしょうか。
単にとるだけなら同じようにSELECT書けば良いだけのはずですが、「アウトプットの形」次第では変わります。
出力したい結果の形を具体的に記載してください。
>コードはマークダウンのcode機能を利用してご提示ください。
そのような機能があるんですね、ありがとうございます。
>出力したい結果の形を具体的に記載してください。
エクリプスのコンソールに出力したいです。
質問は編集できるので適宜ご対応いただけたらと。
あと「ヘルプ」「質問するときのヒント」を一読して質問を再編されたほうが回答を得やすくなると思います。
>質問は編集できるので適宜ご対応いただけたらと。
編集できるんですね。すこしいじってみます。
細かくて申し訳ないですが、code部分は1ファイル1ブロックのほうが見やすいです。(あとコードだけにしてください)
質問編集画面の右側はリアルタイムでプレビュー出てるはずなので、読みやすいかとか確認しながら調整してください。
>code部分は1ファイル1ブロックのほうが見やすいです。(あとコードだけにしてください)
遅くなりました。修正いたしました。
もしかして、下記意味が分かってなかったりしますか?
------------------------
そのテーブルが今現在とれているというテーブルとはどういう関係性にあるのでしょうか。
単にとるだけなら同じようにSELECT書けば良いだけのはずですが、「アウトプットの形」次第では変わります。
------------------------
>SELECT書けば良いだけのはずです
すみません。これがわかりません。
1行目のほうが大事です。「別のテーブルはどういう関係性にあるのか」
例えば最初にとれているテーブルのidを使ってとる必要がある、とか。(親子関係があるとか)そのあたりです。
テーブルの定義でもご提示いただければもう少し回答もしやすいのですが。。
そもそも、今なぜsampleテーブルのデータが取得できているかも理解できていなかったりしますか?
>今なぜsampleテーブルのデータが取得できているかも理解できていなかったりしますか?
いろいろなものを見ながら何とか、ぎりぎりわかっている・・・つもりです。
>idを使ってとる必要がある、とか。(親子関係があるとか)
なるほど、これによってコードが違うということですね。
テーブルは同じデータベース内にあります。IDなどの項目も同じです。
えっと、できればテーブルの定義をください。両方のテーブル。
テーブル名とカラムとカラムの型がわかればいいですが、CREATE TABLE文といってそのテーブルを作るときに実行されたSQLが一番良いです。(どのようなツールを使って作っても裏ではCREATE TABLE文が実行されています。ツールのエクスポート機能でも出力できるはずです)
また
>SELECT書けば良いだけのはずです
について解説しますと、sampleテーブルを実行してデータを取得して・・・とやっていますよね。それと同じ流れをもう1つのテーブルでやりましょう ということです。(変数定義などは別途そのテーブル用にあった方がいいですし、Dbsampless2クラスを作られてますが、テーブルが違うのなら構成が同じでも別のクラスを作るのが理想ですが、それはとりあえず次の段階で)
>テーブル名とカラムとカラムの型がわかればいい
SQL文を追加しました。
惜しい。INSERT文もあれば越したことはないですが「CREATE TABLE」です。テーブル作らないとINSERT文実行してもデータ入りません。
えーと、どうしようかな。
>「CREATE TABLE」です。
遅くなりました。再度SQL文を追加しております。
あ、ちょっと違うんですね。
sampleのほうが date date になってます(コンソールで実行したときと結果が違うような・・?)
>date date になってます
すみません。date → updatetime です。
了解です。
ということは2つのテーブルの項目は名前も定義も同じなんですね。
お手数ですが修正願います(ここのコメント欄は非表示なので、今から見た人に誤解与えないためにも)
では、回答した内容↓で「とりあえずは」やりたいことはできそうです。
回答1件
あなたの回答
tips
プレビュー