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

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

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

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

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

4503閲覧

javaでMySQLを扱いたい

earnest_gay

総合スコア615

MySQL

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

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2016/09/07 07:18

編集2016/09/07 13:27

javaでMySQLを扱うために、JDBCを使っています。

package example; import java.sql.*; public class SampleDb030 { public static void main(String[] args) { Connection con = null; try { // JDBCドライバのロード - JDBC4.0(JDK1.6)以降は不要 Class.forName("com.mysql.jdbc.Driver").newInstance(); // MySQLに接続 con = DriverManager.getConnection("jdbc:mysql://localhost:8888/example", "root", "root"); System.out.println("MySQLに接続できました。"); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { System.out.println("JDBCドライバのロードに失敗しました。"); } catch (SQLException e) { System.out.println("MySQLに接続できませんでした。"); } finally { if (con != null) { try { con.close(); } catch (SQLException e) { System.out.println("MySQLのクローズに失敗しました。"); } } } } }

この
con = DriverManager.getConnection("jdbc:mysql://localhost:8888/example", "root", "root");
finally {・・・}
を取り除いた状態で動作確認すると、接続できましたと表示されるのでクラスPATHは問題なさそうですが、上記のコードを付け足すと2分後くらいに接続できませんでしたとなります。

問題は

con = DriverManager.getConnection("jdbc:mysql://localhost:8888/example", "root", "root");

にあると思うのですが、

DriverManager.getConnection("jdbc:mysql://localhost:8888/DB名", "ユーザー名", "パスワード");

であってますよね?

MAMPなのでPWはrootの筈です。

XAMPPだとターミナルで
mysqlと入力すればログイン出来ますけど
MAMPだと
mysql -u root -p
で、PW聞かれるのでrootを入力しないとログイン出来ないのは毎日やっているので分かります。

どこがおかしいのでしょうか?

DBも存在しています。
イメージ説明

追記
どこかの記事でMAMPのSQLportは8889と書いていたので8889にしたら接続できましたが、MAMPの設定から確かめてみるとありました。

これのことだと思いますが、これは間違った確認方法でこの8889は使ってはいけないのでしょうか?

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

java

1DriverManager.getConnection("jdbc:mysql://localhost:8888/DB名", "ユーザー名", "パスワード");

あってますよね?

あっていればつながりますので、間違っています。

ポート: 8888 ってTomcatなどのポートですよね。MySQL のポートは通常、3306 ですが、環境によります。
:8888 を削除してしまえば良いかと思いますが…


java

1 public static void main(String[] args) { 2 Connection con = null; 3 try { 4 // JDBCドライバのロード - JDBC4.0(JDK1.6)以降は不要 5 Class.forName("com.mysql.jdbc.Driver").newInstance(); 6 // MySQLに接続 7 con = DriverManager.getConnection("jdbc:mysql://localhost/sample", "root", "password"); 8 // System.out.println("MySQLに接続できました。"); 9 } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException e) { 10 System.out.println(e); // 例外の内容をそのまま表示すれば原因は特定できます。 11 } finally { 12 if (con != null) { 13 try { 14 con.close(); 15 } catch (SQLException e) { 16 System.out.println("MySQLのクローズに失敗しました。"); 17 } 18 } 19 } 20 }

イメージ説明

投稿2016/09/07 07:32

編集2016/09/07 13:51
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

earnest_gay

2016/09/07 07:36

tomcatのportは8080です。 3306で例外にキャッチされたのでMySQLのportである8888で試してもダメなのです。
退会済みユーザー

退会済みユーザー

2016/09/07 07:37

mysqlが占有しているポートはどうやって調べましたか? 8888 であることはどうやって確認しましたか?
退会済みユーザー

退会済みユーザー

2016/09/07 08:07

回答を修正、提示したソースコードで実行し、表示された例外情報に応じて対処してください。
earnest_gay

2016/09/07 08:37

"jdbc:mysql://localhost/sample"で試したところ MySQLに接続できませんでした。 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. が返ってきました。 phpmyadminにアクセスする際に http://localhost:8888/phpmyadmin でアクセスするのでそれでポートを確認していましたが 8889にしてみると接続確認取れました。
退会済みユーザー

退会済みユーザー

2016/09/07 08:55 編集

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure これをキーワードにググれば、対処方法見つかりますよね。 > 8889にしてみると接続確認取れました。 それ、確認方法完全に間違っています。 my.cnf の設定を確認してください。
退会済みユーザー

退会済みユーザー

2016/09/07 08:57

> "jdbc:mysql://localhost/sample" おたくの環境では、sampleじゃなくて、example でしょ?
earnest_gay

2016/09/07 13:29

ググっても分からないのです。 すいません、sampleじゃなくてexampleで試しています。 こちらへの記載ミスです。 ポートの件ですが、質問に追記しました。
退会済みユーザー

退会済みユーザー

2016/09/07 13:53 編集

ポートは3306です、多分。実機を見ることできませんから、聞かれても正直、困る。 ただし、8889, 8888 はあくまでも phpmyadmin を開くときにアドレスバーに入っているあたいのことですよね。それはhttpのポートであることは明らか。 phpmyadmin にログインしたら、「変数」という項目があるはず。「フィルタ」に「port」と入れてみれば、設定値が表示されます。そこで確認してください。 添付のようにわざわざ変更して設定しているのであればその設定に従って設定すればいいけど、初めから規定値を支えば、こんなめんどくさいことになりませんよ。
earnest_gay

2016/09/07 14:18

ありがとうございます。 ただ、MAMPをインストールした時からportの変更はしておらずこれがデフォルトです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問