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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

MySQL

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

Java

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

1回答

527閲覧

DB管理アプリ作成(MySQL)において、windows10とmacでの環境

makoto-n

総合スコア436

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

MySQL

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

Java

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

1グッド

0クリップ

投稿2018/06/16 10:58

編集2018/06/20 19:03

こんにちは。
JavaでDB管理アプリを作成しています。

作成の初期段階ではwindows10で作成していたのですが、
PCのハード的な(寿命的な)問題が現れたのでmacbookを購入しました。
windowsPCではXAMPPのMySQLを稼働しDB作成、閲覧、削除、テーブル作成などできていたのですが、
mac環境ではmampでMySQLを稼働してもヌルポインタエラーでDBに接続できません。

mac初心者なのですが、windowsPCとは環境が全くの別物と捉えた方がいいですか?

java

1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.ResultSet; 4import java.sql.Statement; 5 6public class DB_Connection { 7 8 /* DB接続用のメンバ変数 */ 9 Connection con; 10 Statement stmt; 11 ResultSet rs; 12 boolean dbConnFlg = false; 13 14 /* DB接続用の定数 */ 15 static final String DRIVE_NAME = "com.mysql.jdbc.Driver"; 16 static final String DB_NAME = "jdbc:mysql://"; 17 static final String DB_USER = "root"; 18 static final String DB_PASS = "0000"; 19 20 /** 21 * 22 * DBに接続するメソッド 23 * 24 */ 25 public void dbConnect() { 26 try { 27 if (!dbConnFlg) { 28 // DB接続情報 29 Class.forName(DRIVE_NAME).newInstance(); 30 con = DriverManager.getConnection(DB_NAME, DB_USER, DB_PASS); 31 32 // ステートメントの作成 33 stmt = con.createStatement(); 34 35 dbConnFlg = true; 36 System.out.println("DBに接続したよ。"); 37 38 } else { 39 System.out.println("既にDBに接続しています。"); 40 } 41 42 } catch (Exception e) { 43 dbConnFlg = false; 44 System.out.println("予期せぬエラーが発生しました。"); 45 e.printStackTrace(); 46 47 } 48 } 49 50 /** 51 * 52 * DBの操作に必要なデータを保持した変数をクリアにするメソッド 53 * 54 */ 55 public void dbClose() { 56 57 try { 58 59 if (rs != null) { 60 rs.close(); 61 } 62 stmt.close(); 63 con.close(); 64 System.out.println("切断しました"); 65 66 } catch (Exception e) { 67 System.out.println("miss"); 68 e.printStackTrace(); 69 } 70 } 71 72}

接続はこれを使っています。
テストのためにsysoutを書いています。

追記––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
エラーとメインメソッドを記述した物を書きます。
erorr

予期せぬエラーが発生しました。 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:342) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2188) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2221) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2016) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:776) at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at db_test.DB_Connection.dbConnect(DB_Connection.java:32) at db_test.Test.main(Test.java:13) Caused by: java.net.ConnectException: Connection refused (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:301) ... 16 more 成功

main

java

1package db_test; 2 3import java.util.ArrayList; 4 5public class Test { 6 7 public static void main(String[] args) { 8 9 ShowDB sdbTest = new ShowDB(); 10 ArrayList<String> alRlt; 11 boolean bTestFlog = true; 12 13 sdbTest.dbConnect(); 14 //bTestFlog = sdbTest.showDB(); 15 16 if (bTestFlog == false) { 17 System.out.println("エラー"); 18 } else { 19 System.out.println("成功"); 20 alRlt = sdbTest.getSDBName(); 21 22 for (String sDNmae : alRlt) { 23 System.out.println(sDNmae); 24 } 25 } 26 } 27}

環境の問題でしょうか?

追記––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

返答が遅くなり申し訳ありません。
ShowDBクラスを書いていませんでした。
winPCではDB_ConnectionのPASSが違うものの、
コンソールログにDB名一覧が表示されます。

Java

1package db_test; 2 3import java.util.ArrayList; 4 5public class ShowDB extends DB_Connection { 6 7 private ArrayList<String> sDBName = new ArrayList<>(); // DB名格納用 8 private boolean bExceptionFlog = true;// 戻り値用のエラー判別のboolean変数 9 10 public boolean showDB() { 11 12 String sSQL = "show databases"; // SQL文の変数 13 String sDBName;// DB名格納用 14 15 this.sDBName.clear(); 16 17 dbConnect(); // ※このクラス実行前に接続している場合は不要 18 19 /* SQL文の実行 */ 20 try { 21 rs = stmt.executeQuery(sSQL); 22 } catch (Exception sql_e) { 23 bExceptionFlog = false; 24 sql_e.printStackTrace(); 25 } 26 27 /* rsに受け取った値を戻り値用のalDBNameに格納 */ 28 try { 29 30 rs = stmt.executeQuery(sSQL); 31 while (rs.next()) { 32 33 sDBName = rs.getString("Database"); 34 this.sDBName.add(sDBName); 35 36 } 37 38 } catch (Exception sql_e) { 39 bExceptionFlog = false; 40 sql_e.printStackTrace(); 41 } 42 43 /* SQL文をクリア */ 44 dbClose(); 45 46 return this.bExceptionFlog; 47 } 48 49 public ArrayList<String> getSDBName() { 50 return this.sDBName; 51 } 52 53}
nnahito👍を押しています

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

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

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

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

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

m.ts10806

2018/06/16 11:17

NullPointerが出ている箇所を提示してください。
archiver

2018/06/16 15:50 編集

ヌルポじゃなくて接続エラーじゃないですか。"Connection refused"ってありますし。 それとこれはWindows上で動作実績のあるソースですか?この通りだとしたら、Windows上でも接続できていなかったと思うのですが(それとも接続情報はここに掲載するに際して、省略してるとか)。
退会済みユーザー

退会済みユーザー

2018/06/20 22:42

質問かスタックトレースが間違えてるようですね
guest

回答1

0

ベストアンサー

ヌルポインターのエラーを出ることを抑止という観点で回答しますね。

提示のスタックトレースはDB接続失敗なので、
発生したら処理は中断してください。

スタックの末尾にも失敗してるのに成功判定になってるような記述があるのです。

投稿2018/06/20 23:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

makoto-n

2018/06/21 10:16

エラーを間違えてしまい本当に申し訳ありませんでした。 macでも接続できるようにするにはどのように変更すればいいですか? macとwindowsでは環境構築が全く異なりますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問