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

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で作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

2967閲覧

AndroidStudioでConnector/Jを用いてデータベース接続をしたい

shikco_taro

総合スコア8

MySQL

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

JDBC

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

Java

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2020/01/25 06:19

編集2020/01/25 06:42

AndroidStudioでJavaを用いてMysqlのデータベースからデータを取得しようとしています。

データベース接続を実行した際にエラーメッセージが発生しました。

発生している問題・エラーメッセージ

W/System.err: com.mysql.cj.jdbc.exceptions.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 com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) W/System.err: at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) W/System.err: at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199) at java.sql.DriverManager.getConnection(DriverManager.java:569) at java.sql.DriverManager.getConnection(DriverManager.java:219) at com.example.test1.check$DbConnect.doInBackground(check.java:101) W/System.err: at com.example.test1.check$DbConnect.doInBackground(check.java:67) at android.os.AsyncTask$2.call(AsyncTask.java:333) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764) W/System.err: Caused by: com.mysql.cj.exceptions.CJCommunicationsException: 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 java.lang.reflect.Constructor.newInstance0(Native Method) W/System.err: at java.lang.reflect.Constructor.newInstance(Constructor.java:334) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) W/System.err: at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:91) at com.mysql.cj.NativeSession.connect(NativeSession.java:144) at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:956) W/System.err: at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826) W/System.err: ... 13 more W/System.err: Caused by: java.net.ConnectException: failed to connect to /10.0.2.2 (port 3306) from /:: (port 0): connect failed: ENETUNREACH (Network is unreachable) at libcore.io.IoBridge.connect(IoBridge.java:138) W/System.err: at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:129) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:356) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) W/System.err: at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356) at java.net.Socket.connect(Socket.java:616) at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:155) W/System.err: at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:65) ... 16 more W/System.err: Caused by: android.system.ErrnoException: connect failed: ENETUNREACH (Network is unreachable) at libcore.io.Linux.connect(Native Method) W/System.err: at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:126) at libcore.io.IoBridge.connectErrno(IoBridge.java:152) at libcore.io.IoBridge.connect(IoBridge.java:130) ... 24 more

該当のソースコード

package com.example.test1; import androidx.appcompat.app.AppCompatActivity; import android.app.Activity; import android.os.AsyncTask; import android.view.View; import android.os.Bundle; import android.widget.*; import android.widget.Spinner; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLDataException; import java.sql.Statement; import java.sql.DriverManager; import android.widget.TextView; import java.sql.*; import android.os.AsyncTask; public class check extends AppCompatActivity { /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.check); /** Spinnerオブジェクトを取得**/ Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); TextView textView4 = (TextView) findViewById(R.id.textView4); String[] labels = getResources().getStringArray(R.array.spinner_items); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels); spinner1.setAdapter(adapter); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); /** 選択されているアイテムのIndexを取得*/ //int idx = spinner.getSelectedItemPosition(); /**選択されているアイテムを取得*/ String item = (String) spinner1.getSelectedItem(); textView4.setText(item); } public void onButton1(View view) { Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); TextView textView4 = (TextView) findViewById(R.id.textView4); String str = spinner1.getSelectedItem().toString(); textView4.setText(str); try{ Class.forName("android.os.AsyncTask"); }catch(ClassNotFoundException e){} DbConnect task = new DbConnect(check.this); task.execute(); } public String roomGet() { //部屋番号取得 Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); String room = spinner1.getSelectedItem().toString(); return room; } class DbConnect extends AsyncTask<Void, Void, String>{ //データベース参照・データ引用 Activity activity = null; public DbConnect(Activity act) { activity = act; } String driverName = "com.mysql.cj.jdbc.Driver"; //ドライバへのパス String jdbcUrl = "jdbc:mysql://10.0.2.2:3306/students?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";//jdbcのurl String userId = "admin"; //dbのユーザー名 String userPass = "root"; //ユーザーのパスワード Connection con = null; Statement stmt = null; ResultSet rs = null; @Override protected String doInBackground(Void... params) { String text1 = ""; String room_id = roomGet(); System.out.println(room_id); int i = 0; //System.out.println("aaaa"); try { // JDBCドライバのロード - JDBC4.0(JDK1.6)以降は不 try { Class.forName(driverName); System.out.println("JDBCドライバロード完了"); } catch (ClassNotFoundException e) { e.printStackTrace(); //System.out.println("bbb"); } //MYSQLに接続 con = DriverManager.getConnection(jdbcUrl, userId , userPass); System.out.println("MySQLに接続できました。"); stmt = con.createStatement(); //String sql ="Select * from items WHERE item_room = '" +room_id +"'"; String sql = "Select * from items WHERE item_room = 'T001'"; rs = stmt.executeQuery(sql); while (rs.next()) { int id = rs.getInt(1); String item_name = rs.getString(3); String time = rs.getString(5); text1 += id + " " + item_name + " " + time + " " + "\r\n"; } rs.close(); stmt.close(); con.close(); } catch (SQLException e) { text1 = e.getMessage(); e.printStackTrace(); System.out.println("MySQLに接続できませんでした。"); } return text1; } protected void onPostExecute(String result) { TextView tv = (TextView) activity.findViewById(R.id.textView10); tv.setText(result); } } //データベース参照・データ引用 終わり }

補足情報

AndroidStudio3.5
JDK1.8.0.241 , API29
Mysql8.0
Connector/J 8.0.18

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

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

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

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

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

m.ts10806

2020/01/25 06:20

>AndroidStudioで タグに追加しておいてください。Javaだけの問題でない可能性も大いにあります。
guest

回答1

0

自己解決

サーバーをherokuで立て直すと接続することができました

投稿2020/02/02 15:32

shikco_taro

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問