質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

1712閲覧

javaでMySQLを使用したデータベースがうまく表示できません。

Java_beginner

総合スコア16

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/08/28 02:58

前提・実現したいこと

javaとデータベースを繋げて、大学の偏差値ランキングを作成しています。
コンパイルは通るのですが、取り出したいデータベースの内容が表示されません。

該当のソースコード

java

1package WorkMysql; 2import java.sql.Connection; 3import java.sql.ResultSet; 4import java.sql.SQLException; 5import java.sql.Statement; 6 7public class DBManagerMain { 8 public static void main(String[] args) throws SQLException { 9 System.out.println("2019年全国大学偏差値一覧 [1位~30位]\n"); 10 Connection con = DBManager.getConnection(); 11 Statement stm = con.createStatement(); 12 String sql = "select * from university"; 13 ResultSet rs = stm.executeQuery(sql); 14 while (rs.next()) { 15 System.out.println(rs.getInt("deviation_mini") + "~" + 16 rs.getInt("deviation_max") + "\t " + 17 rs.getString("name") + "\t " + 18 rs.getString("type") + "\t " + 19 rs.getString("region") + "\t " + 20 rs.getString("prefecture")); 21 } 22 Introduction i = new Introduction(); 23 System.out.println(Introduction.introduction(con)); 24 25 rs.close(); 26 stm.close(); 27 con.close(); 28 } 29} 30
package WorkMysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBManager { private static String driverName = "org.mariadb.jdbc.Driver"; private static String url = "jdbc:mariadb://localhost/db1"; private static String user = "root"; private static String pass = "1234"; public static Connection getConnection() { Connection con = null; try { Class.forName(driverName); con = DriverManager.getConnection(url,user,pass); } catch ( ClassNotFoundException e) { e.printStackTrace(); } catch ( SQLException e) { e.printStackTrace(); } return con; } }
package WorkMysql; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Scanner; public class Introduction { public static String introduction(Connection con) { // Introduction i = new Introduction(); // Deviation d = new Deviation(); // Type t = new Type(); // Region r = new Region(); System.out.println("\n検索したい方は、該当番号を入力してください。\n"); String sql = null; String s1 = ""; Scanner s = new Scanner(System.in); try { System.out.println("希望の番号を入力してください。\n"); System.out.println("1,偏差値から 2,国公私立から 3,全国地方区分から\n"); while (s.hasNext()) { String number = s.next(); System.out.println(number); switch (number) { case "1": sql = Deviation.deviation(); case "2": sql = Type.type(); case "3": sql = Region.region(); default: sql = ("該当しません。もう一度"); break; } Statement stm = con.createStatement(); ResultSet rs = stm.executeQuery(sql); rs.first(); s1 = rs.getInt("deviation_mini") + "~" + rs.getInt("deviation_max") + "\t " + rs.getString("name") + "\t " + rs.getString("type") + "\t " + rs.getString("region") + "\t " + rs.getString("prefecture"); } } catch (IllegalArgumentException | SQLException e) { } s.close(); return s1; } }
package WorkMysql; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.Scanner; public class Region { public static String region() { String sql = null; Scanner s = new Scanner(System.in); try { System.out.println("希望の番号を入力してください。\n"); System.out.println("1,北海道 2,東北 3,関東 4,中部 5,近畿 6,四国 7,中国 8,九州 9,沖縄\n"); while (s.hasNext()) { String number = s.next(); System.out.println(new StringBuilder(number).reverse()); Connection con = DBManager.getConnection(); Statement stm = con.createStatement(); switch (number) { case "1": sql = "select * from university where region = '北海道'"; case "2": sql = "select * from university where region = '東北'"; case "3": sql = "select * from university where region = '関東'"; case "4": sql = "select * from university where region = '中部'"; case "5": sql = "select * from university where region = '近畿'"; case "6": sql = "select * from university where region = '四国'"; case "7": sql = "select * from university where region = '中国'"; case "8": sql = "select * from university where region = '九州'"; case "9": sql = "select * from university where region = '沖縄'"; default: sql = ("該当しません。もう一度"); break; } } } catch (IllegalArgumentException | SQLException e) { } s.close(); return sql; } }
package WorkMysql; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.Scanner; public class Type { public static String type() { String sql = null; Scanner s = new Scanner(System.in); try { System.out.println("希望の番号を入力してください。\n"); System.out.println("1,国立 2,公立 3,私立\n"); while (s.hasNext()) { String number = s.next(); System.out.println(new StringBuilder(number).reverse()); Connection con = DBManager.getConnection(); Statement stm = con.createStatement(); switch (number) { case "1": sql = "select * from university where type = '国立'"; case "2": sql = "select * from university where type = '公立'"; case "3": sql = "select * from university where type = '私立'"; default: sql = ("該当しません。もう一度"); break; } } } catch (IllegalArgumentException | SQLException e) { } s.close(); return sql; } }
package WorkMysql; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Scanner; public class Deviation { public static String deviation() { String str = null; Scanner s = new Scanner(System.in); try { System.out.println("希望の偏差値を入力してください。"); while (s.hasNext()) { int figure = s.nextInt(); System.out.println(new StringBuilder(figure).reverse()); Connection con = DBManager.getConnection(); Statement stm = con.createStatement(); String sql = "select * from university where deviation_max >=figure"; ResultSet rs = stm.executeQuery(sql); try { while(rs.next()) { rs.getInt("deviation_max"); str = String.valueOf(rs); } } catch (SQLException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } } catch (IllegalArgumentException | SQLException e) { } s.close(); return str; } }

試したこと

各メソッドの引数をいれてみたり、、、
正直プログラミングが苦手で、メソッドの引数などの仕組みが一人ではどうしてもわかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/28 03:03

そもそもコード内にあるSQLはDBに対して直接実行して想定の情報が得られているのでしょうか? また、Exceptionをcatch しておきながら何も出力させていません。 e.getMessage()をprintするなどして確認してみてください。
Java_beginner

2019/08/28 03:37

お早いご回答ありがとうございます。 SQLの部分を再度取り組んでみます。 catchの部分もありがとうございます。
m.ts10806

2019/08/28 03:41

ちょっと説明不足でしたが、それでも解決しない場合、 確認したことと、その内容、結果を質問に追記してくださいね
Java_beginner

2019/08/28 05:27

お心遣いありがとうございます。 catchの件はありがとうございました。 が、お恥ずかしい話SQLは全くわかりません。 swich文内のSQL文が全く引っかかってないことがわかりました。がその対処方法がわかりません。 もしよろしければ、何かアドバイスいただけませんでしょうか。
Java_beginner

2019/08/28 06:35

ありがとうございます。 なんとか解決ができました!
m.ts10806

2019/08/29 02:04

ではその顛末を具体的に自身で回答として投稿し、自己解決の形をとってください。 https://teratail.com/help#resolve-myself (間違っても「解決しました」だけにしないこと。今現在の質問内容からどう辿って何をして解決したか他者が読んで分かる内容にすること)
Java_beginner

2019/08/31 08:54

そうなんですね! 今回はm.ts10806様のお力添えがあったからこそと思ったので、自己解決欄は不要だと判断していました。 早速、載せます。 ありがとうございます。
guest

回答1

0

質問は、無事解決しました。
私が苦手な引数と戻り値に原因がありました。
今回は子クラスにおける引数が不要であったにも関わらず全てStringで渡そうとしていたり、
継承関係の理解が大変不足していました。

ありがとうございました。

(コードを載せたいのですが、別のPCで行った課題でしたので現在手元にありません。
追記できましたら、後日載せようと思っております。もし、テラテイルの操作上難しかったら申し訳ありません。)

投稿2019/08/31 09:01

Java_beginner

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問