previous arrowprevious arrow
next arrownext arrow
previous arrownext arrow
Shadow
Slider
Java/AndroidStudio

android MySql接続 非同期処理(MySqlローカル接続エラー原因調査 2)

以前にMySqlへデータを登録するプログラムを記述し、失敗していたので、

その原因を調べました。

以前のエラーの直接の原因は接続先のURLの間違いだったようです。

また、後付けになってしまいましたが、非同期処理で行わなければならないようです。

まとめるとこの2点に注意が必要です。

①非同期処理

②接続先のURL

それぞれ説明していきます。

①非同期処理について

非同期処理を行う理由は

UIスレッドでネットワーク通信が許可されてないから

のようです。

(AndroidでSocket通信より)

非同期処理を行うにはAsyncTaskクラス使います。

ソースを見るほうがわかりやすいかもしれませんので、載せておきます。

すごく雑な解説なので、下のほうに載せている参考URLからみていただければと思います。

画面側からAsyncTaskを呼び出してデータを登録します。

 

execute()で下に記述した処理が動きます。

②接続先のURLについて

上に書いたソースにはすでに載っているのですが、ローカルホストのMySql接続を行う場合は、

接続URLはjdbc:mysql://10.0.2.2:3306/[DB名]と記述します。

某ブログなどで調べていると、こんな書き方になっていますが、ダメみたいです。(昔はできてたのか…?)

jdbc:mysql://localhost:3306/[DB名]

こちらの書き方でMySqlへ接続できない理由は

AVDから見たlocalhostはAVD自身になるそうです。
その代わりにローカルPCには、10.0.2.2 というIPが割り当てられているようです。

(androidエミュレータからlocalhostへの接続より)

なるほど。

AVDからAVDに接続してはおかしなことになってしまいますね。

SQL実行(メッセージ送信実行)

DB(登録前)は空です。
メッセージを入力し、送信ボタンをクリック
送信ボタンクリック後、送信が完了しました。
メッセージ送信後、DBに登録されました。

なにはともあれ、AndroidoからMySqlへデータの登録ができました!

以後はもっとアプリ作成に力を入れていきたいと思います。

2018/09/16追記

メールの送信相手は、ランダムに選んで送信しています。

以前、追々載せていくと記載しましたが、

ランダムにユーザにメール送信(登録)するSQLはこちらです。

AndroidSudio MySqlでランダムにデータを取得する

独学からプログラミングスクールで次のステップへプログラミングを独学でされている人は意外と多いです。 その理由も、企業から内定が出たから、入社後技術面が不安だから、転職をしようと...
プログラミング初心者の独学方法 文系卒の経験談私はIT系の会社に勤めて4年目ですが、最初の1年は開発をさせてもらえませんでした。 文系卒でプログラミング経験はなかったので、開発...
プログラミング初心者の独学とはエラーとの闘い プログラミングを勉強し始めた初心者の方はつまづくことが多いと思います。 私も最初はエラーが出るたびにいちいちビビッて、意味...

・AndroidでSocket通信
http://qiita.com/tomoima525/items/daa30505ad18e89641f9

・AsyncTaskを使った非同期処理のきほん
http://dev.classmethod.jp/smartphone/android/asynctask/

・AsyncTaskの使い方考察
http://d.hatena.ne.jp/Nagise/20120309/1331265123%E3%80%80

・Androidを使った備忘録を作ってみよう
http://web.sfc.wide.ad.jp/~tinaba/tutorials/AndroidCS/

・androidエミュレータからlocalhostへの接続
http://blog.ceed.jp/?p=298

・Android : How to send data to remote database without using PHP or any webservices?
http://stackoverflow.com/questions/15739407/android-how-to-send-data-to-remote-database-without-using-php-or-any-webservic

COMMENT

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