プロフィール
Java/AndroidStudio

android MySql接続 SQLException: No suitable driver 対応方法!

お仕事が忙しかったことと、原因を調べることに時間がかかったので、

久しぶりに投稿します!


・前回発生していたExceptionについて

java.sql.SQLException: No suitable driver

このExceptionはクラスパスを通すことで解決できました。

手順は以下です。

①JDBCのドライバーのダウンロード

こちらからダウンロードできます。

http://dev.mysql.com/downloads/connector/j/

複数回解凍を行って「~.jar」のファイルを取得してください

何回解凍したかは忘れましたが…

②JDBCドライバーの配置

プロジェクトフォルダにあるlibsフォルダに配置してください。

③JDBCのドライバーを認識させる

ちょっと文章で書くのは難しいので、キャプチャで説明します。

プロジェクトのビューのプロジェクトの名前で右クリックするし、
メニューのOpen Module Settingsをクリック

Project StructureのDependanciesタブを開き、
右端の「+」をクリックする

libsフォルダに配置したJDBCドライバーを選択する


・DBへ登録後

エミュレータからMySqlのDBへ登録を行ってみましたが、

以下のエラーが発生しました

02-19 12:52:01.747 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.SocketException: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 3306): connect failed: ECONNREFUSED (Connection refused)
02-19 12:52:01.747 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: ** BEGIN NESTED EXCEPTION **
02-19 12:52:01.748 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: java.net.SocketException
02-19 12:52:01.748 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: MESSAGE: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 3306): connect failed: ECONNREFUSED (Connection refused)
02-19 12:52:01.748 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: STACKTRACE:
02-19 12:52:01.749 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: java.net.SocketException: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 3306): connect failed: ECONNREFUSED (Connection refused)
02-19 12:52:01.749 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:143)
02-19 12:52:01.749 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at com.mysql.jdbc.MysqlIO.(MysqlIO.java:225)
02-19 12:52:01.749 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at com.mysql.jdbc.Connection.createNewIO(Connection.java:1805)
02-19 12:52:01.749 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at com.mysql.jdbc.Connection.(Connection.java:452)
02-19 12:52:01.749 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:411)
02-19 12:52:01.750 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at java.sql.DriverManager.getConnection(DriverManager.java:179)
02-19 12:52:01.750 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at java.sql.DriverManager.getConnection(DriverManager.java:213)
02-19 12:52:01.750 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at com.example.loosecarrot.whogotmessage.HttpRqst.doInBackground(HttpRqst.java:96)
02-19 12:52:01.750 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at com.example.loosecarrot.whogotmessage.HttpRqst.doInBackground(HttpRqst.java:22)
02-19 12:52:01.750 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at android.os.AsyncTask$2.call(AsyncTask.java:292)
02-19 12:52:01.750 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
02-19 12:52:01.767 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
02-19 12:52:01.767 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
02-19 12:52:01.767 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
02-19 12:52:01.767 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: at java.lang.Thread.run(Thread.java:818)
02-19 12:52:01.768 23667-23737/com.example.loosecarrot.whogotmessage I/System.out: ** END NESTED EXCEPTION **

 


・対応方法

対応方法は調査済みです。

そのうち備忘録として投稿していきたいと思います。

2018/09/15追記
以下でDB(MySQL)へ登録できる方法を記載しているので見てみて下さい。
android MySql接続 非同期処理(MySqlローカル接続エラー原因調査 2)

<参考URL>
Java, Servlet: No suitable driver found for “~” の原因と解決法
https://yukun.info/java-no-suitable-driver-found/

 

ubuntuにmysqlのDBを作ってそれにandroidからアクセス
http://kokawa2003.blogspot.jp/2014/08/ubuntumysqldbandroid.html

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です