dポイントプレゼントキャンペーン実施中!

アンドロイド端末よりさくらインターネットのレンタルサーバーへ外部接続し、MYSQLからデータを取得してアンドロイド端末で取得データを表示させたいのですが、参考となる書籍やサイトがあったら教えて下さい。

現在、さくらインターネットではスタンダードプランでサーバーを借りていまして、サーバー内でphpの処理でMYSQLからデータを取得してHTMLで表示する仕組みができているので、アンドロイド端末からこのPHPの処理を動かして取得したデータをアンドロイド端末で表示すればよいと考えているのですが、サイトや書籍を調べてもできません。

※Android sdkは、Eclipse上で動作させており、エミュレータで実行しています。

参考にしたページは、次のようなものです。

http://blog.kabel.jp/?cid=20
→このページの「Android から外部SQLへアクセス」の部分の通りに設定しました。

http://archi.iza.ne.jp/blog/entry/691670/
→このページをベースに添付(名前はJdbcSample.javaのソースを作り、eclipse上で実行しました。

http://www.atmarkit.co.jp/fjava/javatips/069java …

http://oshiete.goo.ne.jp/qa/5527506.html

エミュレータで「hello world!」は表示できたので、基本的な環境の設定はできてると思っています。
実機で実現できれば一番よいのですが、まずはエミュレータで実現できればと考えています。

ヒントだけでもよいので、どうか私にご教授下さい。

以下は、実行したソースです。

import java.sql.Statement;

public class JdbcSample {

public static void main(String[] args) {

Connection con = null;
Statement stmt = null;
ResultSet rset = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase","root", "root");
→ここのlocalhostは10.0.2.2も試しましたが、ダメでした。
→ここのlocalhostと書かれた右側は3306以外は試していません。
→ここのmydatabaseは、mysql○○○.db.sakura.ne.jpを指定しました。
→ここの左側のrootはデータベース名を指定しました。
→右側のrootはデータベースのパスワードを指定しました。

stmt = con.createStatement();

rset = stmt.executeQuery("SELECT * FROM customerlist");
→ここは実在するテーブル名を指定しました。

while ( rset.next() ) {
System.out.print(rset.getInt("id"));
→このidや下記のnameやcompanynameは上記テーブル内の列名を指定しました。
System.out.print(",");
System.out.print(rset.getString("name"));
System.out.print(",");
System.out.println(rset.getString("companyname"));
}

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rset.close();
stmt.close();
con.close();
} catch ( SQLException e ){
e.printStackTrace();
}
}
}
}

A 回答 (3件)

こんにちは。



("jdbc:mysql://localhost:3306/mydatabase","root", "root");

ここの内容は
jdbc:mysql://接続先:3306/データベース名", "ユーザ","パスワード"
ですので指定の仕方が間違っています。

ただし、さくらサービスのDBが外部からの接続を許可していなければ、接続できないはずです。

その場合は先に質問者様が仰っている通り、さくらサーバに設置してあるPHP等を介して取得することになると思います。
(XMLで返したりJSONで返したり)
    • good
    • 1
この回答へのお礼

データベース名とは、mysql○○○.db.sakura.ne.jpのような指定でなく、自分で付けたデータベースの名前でしょうか?
また、さくらが外部接続を受け付けていると仮定すると、接続先はmysql○○○.db.sakura.ne.jpのIPアドレスを指定すればよいのでしょうか?

かなり重要なアドバイスと思っています。XMLやJSONについて調べてみます。

お忙しい中、ありがとうございます。

お礼日時:2012/01/01 11:43

SSH ポート転送 ぼそっ



さくらインターネットは外部からDB接続は拒否してます。
    • good
    • 1
この回答へのお礼

外部からのDB接続ができないとなるとかなり残念です。

年末の忙しい中、ご回答ありがとうございます。

お礼日時:2012/01/01 11:38

この手のレンタルサーバは外部からDBに対しての接続ポートも開けてないし


ユーザのアクセスできる制限でほとんどがlocalhost指定だったりして外部からそもそも
接続できないようになっていると思うけどね。

どうしてもやりたいなら簡単な方法としてはAbdroid端末からWebサーバに対して
httpでリクエストしてWebサーバ側でPHPやPerlでxmlなりのデータをサーバ側で生成して
それを送り返す形にするしかないでしょうね。
    • good
    • 0
この回答へのお礼

そういうことですか。
XML等のデータをサーバーで生成するあたりは初めて知ることなので、
調べるキーワードができて嬉しいです。

外部からDBに接続できるレンタルサーバーはどこで見分けたらよいのですか?

貴重なアドバイスをいただき、ありがとうございました。

お礼日時:2012/01/01 11:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!