プログラミング独学・スクール・就職(目次)
プログラミング独学・スクール・就職(目次)
おすすめのプログラミングスクール めざせ就職・年収アップ!
おすすめのプログラミングスクール めざせ就職・年収アップ!
SEの転職活動で使うべきサイト・エージェント 目指せ年収アップ
SEの転職活動で使うべきサイト・エージェント 目指せ年収アップ
メンズクリア2年通い放題入会! その後のヒゲ状況(不定期更新)
メンズクリア2年通い放題入会! その後のヒゲ状況(不定期更新)
ブログ開始3年が経った月収が1万超えてた!
ブログ開始3年が経った月収が1万超えてた!
7年目で初の転職活動 2カ月で内定獲得した記録
7年目で初の転職活動 2カ月で内定獲得した記録
面接で評価されたプログラミング未経験者の学習方法
面接で評価されたプログラミング未経験者の学習方法
previous arrowprevious arrow
next arrownext arrow
 
Shadow
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

ABOUT ME
LooseCarrot
LooseCarrot
ブログ運営をしているLooseCarrotです。 興味のあることにトライして発信していきます! プロフィール
関連している記事