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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

2回答

18749閲覧

AndroidアプリでDBサーバにアクセスしたいのですが

fruit

総合スコア9

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

2クリップ

投稿2016/01/19 09:07

Androidアプリを作成していてDBサーバにアクセスして検索結果を読み込む、またDBに書き込みを行うという処理を行いたいのですがどのようにしたらいいのでしょうか?JDBCは使えますか?
パスの設定等は初心者なりにいろいろ調べて設定してみましたが通っているか分かりません。
汚いソースコードで申し訳ありませんが助けていただきえると助かります><
コードは以下のようになっています。

public class UserChecker extends AsyncTask<Producers,Void,String> {

Activity activity = null; public UserChecker(Activity act){ activity = act; } @Override protected String doInBackground(Producers... params) { String qryID=Producers.getID(); String qryPW=Producers.getPassword(); String receive=""; String receive2=""; try{ Class.forName("com.mysql.jdbc.Driver"); Connection conn=DriverManager.getConnection("jdbc:mysql://192.168.0.2/memo_db","memo","memo"); Statement stmt=conn.createStatement(); String sql="select memo from memo_tbl where memo like '%"+qryID + "%'"; String sql2="select memo from memo_tbl where memo like '%"+qryPW + "%'"; ResultSet rs=stmt.executeQuery(sql); ResultSet rs2=stmt.executeQuery(sql2); int rsCnt=0; while(rs.next()){ receive+=rs.getString(1)+"\n"; rsCnt++; } int rsCnt2=0; while(rs2.next()){ receive2+=rs2.getString(1)+"\n"; rsCnt2++; } if(rsCnt==0 || rsCnt2==0){ receive="IDもしくはパスワードが違います。もう一度入力してください"; MainActivity.setCheckFrag(false); }else if(rsCnt==1&&rsCnt2==1){ receive="ログインに成功しました。"; MainActivity.setCheckFrag(true); } rs.close(); stmt.close(); conn.close(); }catch(Exception e){ receive=e.getMessage(); } return receive; } @Override protected void onPostExecute(String result){ Toast.makeText(activity, result, Toast.LENGTH_LONG).show(); }

}

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

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

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

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

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

guest

回答2

0

ベストアンサー

Androidアプリから直接、DBサーバにつなぐ・・・のは一般的でないですね。

試してませんが、もしできたとしても・・・
このAndroidが、DBサーバにアクセス可能なネットワークにWifiとかでつながっていない限り、
DB接続はできないと思います。。

※DBサーバをInternetから、だれでもつなげられるようにするわけではないですよね・・・?

普通は、DBサーバとつながっているWEBサービスを作成して、必要な機能だけAPIを作成します。
WEBサービスはInternetに公開しておき、AndroidからはそのAPIをHTTPやSSL/TLSで呼び出すようにします。

投稿2016/01/19 09:27

編集2016/01/19 09:28
Toyoshima

総合スコア422

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

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

fruit

2016/01/19 11:36

回答ありがとうございます! なるほど、一般的にはデータベースへのアクセスはそのような方法を取るのですね・・・ 今回私はユーザーかどうか確かめるデータベーステーブルとユーザがデータを登録するためのテーブルに分けて作成しています。 また、今回作成するアプリは小さなコミュニティの中でのみ利用してもらうようなアプリですのでインターネットからの接続でも大丈夫かなと思っていたのですが、Webサービスを作成したほうがいいのでしょうか?? ※私がやっていた方法だとInternetから誰でも(アプリ取得者のみ)接続できるというような方針でしたが、その方法はそもそもDBサーバにアクセスできないということでしょうか・・?
Toyoshima

2016/01/20 01:55

Internet越しにMySQLサーバへの接続はできるとは思いますが・・・ 通信経路を暗号化させないと、ものすごい脆弱ですよ・・・。 DBからの検索結果のパケットが、Internet上に流れてしまうので容易に盗聴可能ですし、攻撃者により、DBサーバへ接続される可能性も高いです。 通信経路の暗号化については、SSL/TLSで接続も可能なようです。 http://dev.mysql.com/doc/refman/5.6/ja/configuring-for-ssl.html ただし、これで暗号化はされるものの、DB接続口がInternetに解放されているため、 「場合によってはだれでもつなぐ事ができてしまう」 という脆弱性は残存することを認識してください。 極端な話ですが、ID・パスワードが漏えいした場合、今ここにいる私が、そのDBサーバに侵入して、あらゆる個人情報を検索したり、レコードを物理削除したり、といういたずらができてしまいます。
fruit

2016/01/20 09:08

なるほど・・・了解しました!Webサービスを作ってからAPI実装の手順でやり直してみます!
guest

0

そのような接続方法を採用すべきか否かは取り敢えず置いておいて、質問内容の『AndroidでJDBCが使用できるかどうか』についてはMySQL Connector/Jの5.1.37以降はAndroidではコンパイルエラーになり実行できないことを確認しています。

このバージョン未満であれば、(私が実際に行ってみたわけではないですが)検索してみると事例は見つかります()ので可能でしょう。

投稿2016/01/20 05:05

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

fruit

2016/01/20 09:11

回答ありがとうございます!接続方法からやり直すことに決めました。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問