データベースとの同期

999 views
Skip to first unread message

柿沼成豪

unread,
Sep 10, 2012, 12:08:47 PM9/10/12
to android-g...@googlegroups.com
初めまして、初心者のコンタと申します。

現在、レンタルサーバーを借りてphpMyAdminのデータベースと
連携したいのですが、どこのサイトを参照してもレンタルサーバーとの
連携ではなくandroid内のSQLiteのデータベースのしか書いてないのでわかりません。
どういったソースコードをかけばいいのかご教授お願い致します。

ちなみにロリポップのサイトでレンタルサーバーを借りております。

よろしくお願い致します。

Hirokazu Fukami

unread,
Sep 10, 2012, 12:13:01 PM9/10/12
to android-g...@googlegroups.com
こんばんはfkmです。

最近ホットな以下のスレッドが参考になるかと思います
https://groups.google.com/forum/?fromgroups=#!topic/android-group-japan/5-gjE-LftpI

2012/9/11 柿沼成豪 <pikat...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

成豪 柿沼

unread,
Sep 13, 2012, 9:14:45 AM9/13/12
to android-g...@googlegroups.com
こんばんは。返答ありがとうございます。

ほっとなスレッドを拝見しましたが、
具体的なソースの書き方がわかりません;;

どなたかロリポップのwebサーバーで
データベースを使われているかた
ご教授お願い致します。

2012年9月11日火曜日 1時13分17秒 UTC+9 fkm:
こんばんはfkmです。

最近ホットな以下のスレッドが参考になるかと思います
https://groups.google.com/forum/?fromgroups=#!topic/android-group-japan/5-gjE-LftpI

2012/9/11 柿沼成豪 <pikat...@gmail.com>:
> 初めまして、初心者のコンタと申します。
>
> 現在、レンタルサーバーを借りてphpMyAdminのデータベースと
> 連携したいのですが、どこのサイトを参照してもレンタルサーバーとの
> 連携ではなくandroid内のSQLiteのデータベースのしか書いてないのでわかりません。
> どういったソースコードをかけばいいのかご教授お願い致します。
>
> ちなみにロリポップのサイトでレンタルサーバーを借りております。
>
> よろしくお願い致します。
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-japan+unsubscribe@googlegroups.com にメールを送信してください。

geordi...@yahoo.co.jp

unread,
Sep 13, 2012, 1:44:09 PM9/13/12
to android-g...@googlegroups.com
こんばんはgeordiです。

あまりに質問が曖昧で、「教えてちゃん」になっているので回答が少ないのだと思います。
誰でも最初は初心者ですので、過去ログを見たり色々なキーワードで検索した後で、他の方の質問内容を参考にして質問された方がいいかと思います。

で、本題ですが
初心者との事ですので、いきなり連携ではなく順序立てて進めてはいかがでしょうか。
※とっつきやすいと勝手に思いphpを使用した場合の例です。

・MYSQLでデータベース構築
(phpMyAdminはMYSQLの管理ツールです)
・データ登録用php作成
(ブラウザでhttp://HOGEHOGE.jp/regist.php?data1=123&data2=456 のようにアクセスしてデータをDB登録できるように)
・Androidでhttp通信するアプリの作成
(URLを投げる形でアプリからデータをpostする)
ここまで出来ればデータの取得などの連携も工夫次第だと思います。

検索キーワードは「MYSQL」「post」「php」「android」等の組み合わせで、ほとんどサンプルソース付きで出てくると思います。
頑張ってみてください。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/Wxd7qj6NGY8J にアクセスしてください。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>

Satoshi Miura

unread,
Sep 13, 2012, 7:42:03 PM9/13/12
to android-g...@googlegroups.com

三浦です。

ロリポップは外部からのDB接続は許可していますか?

昔契約していたさくらインターネットでは、
外部からの接続はできませんでした。

自分のサーバでなければ、

xmlやjsonで連携したほうが良いと思います。

2012/09/13 22:14 "成豪 柿沼" <pikat...@gmail.com>:
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/Wxd7qj6NGY8J にアクセスしてください。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。

柿沼成豪

unread,
Sep 15, 2012, 4:59:20 AM9/15/12
to android-g...@googlegroups.com
お世話になります。
ロリポップは恐らく許可していると思います。


現在このソースコードでDB接続しようと錯誤しているのですが、
conn = DriverManager.getConnectionの1つ目の引数のところは
"jdbc:mysql://データベースサーバー名:/データベース名"
で、あってるんでしょうか?
うまく接続できません。。。

ご教授お願いします。


package com.example.dbdb;
import android.os.Bundle;
import android.app.Activity;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import android.widget.FrameLayout;
import android.widget.TextView;

public class DBdbActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Connection conn;
Statement stmt;
ResultSet rs = null;

//データを表示するためのtextViewクラス
TextView textView=new TextView(this);
//単一のオブジェクトを画面に配置するためのFrameLayoutクラス
FrameLayout layout=new FrameLayout(this);

//FrameLayoutオブジェクトにtextViewオブジェクトを登録
layout.addView(textView);
//FrameLayoutオブジェクトを表示
setContentView(layout);

try {
//JDBCドライバを指定
Class.forName("com.mysql.jdbc.Driver");
//データベースに接続
conn =
DriverManager.getConnection("jdbc:mysql://mysql578.phy.lolipop.jp:/LAA0240991-buzz",
"******", "****:");
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM member");
rs.next();

String text1 = rs.getString(3);

//データをtextViewオブジェクトに表示
textView.setText(text1);

} catch(Exception e) {
textView.setText("kakinuma");
}
}
}

2012年9月14日 8:42 Satoshi Miura <mur...@gmail.com>:
>>> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
>>> > このグループから退会するには、android-group-j...@googlegroups.com
>>> > にメールを送信してください。
>>> > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
>>> > からこのグループにアクセスしてください。
>>> >
>>>
>>>
>>>
>>> --
>>> -------------------------------------------------------------
>>> 深見 浩和(Hirokazu Fukami)
>>>
>>> URI:http://www.fkmsoft.jp
>>> email: f...@fkmsoft.jp
>>
>> --
>> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
>>
>> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/Wxd7qj6NGY8J
>> にアクセスしてください。
>> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
>> このグループから退会するには、android-group-j...@googlegroups.com
>> にメールを送信してください。
>> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
>> からこのグループにアクセスしてください。
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。

Akinori Maeda

unread,
Sep 15, 2012, 7:46:02 AM9/15/12
to android-g...@googlegroups.com
>お世話になります。
>ロリポップは恐らく許可していると思います。

恐らくではなく、接続できるかの確認をしろよ。
コードを書いてるWindowsのPCからMySQLクライアントとかほかのツールでも使って動
作確認があっての次のアクションだろ。
一般的に考えて外部にDBサービスのポートを開けてるケースなんてほとんど無いと思
う。

Satoshi Miura

unread,
Sep 15, 2012, 10:13:03 AM9/15/12
to android-g...@googlegroups.com

三浦です。

うまく接続できないというのを具体的に説明しないと、
誰も回答できないと思いますよ。

ローカル環境にDBサーバを構築してはどうでしょうか。
ローカルで接続でできれば、環境の問題ですし、
接続できないなら、コードの問題だと思います。

2012/09/15 17:59 "柿沼成豪" <pikat...@gmail.com>:

Seitaro Kawamura

unread,
Sep 15, 2012, 10:44:10 AM9/15/12
to android-g...@googlegroups.com
普通は、DBはWebサーバー上のアプリケーションとのみ通信可能とし、クライアント(スマホ/タブレット)からはHTTPSやHTTPでWebアプリケーションに対してリクエストを送信します。
PHPやJava、ASP.NETなどでWebアプリケーションを作った経験がありますか?
普通のWebアプリケーションはブラウザからフォーム入力を受け取って、HTMLページとしてレスポンスを返します。
この時DBサーバと通信しているのはブラウザじゃなくWebサーバー上で稼働するアプリケーションですよね?
ブラウザはWebサーバーとしか通信出来ない。DBサーバーにSQLを送ることが出来るのはWebサーバーだけ。
この方式は
・SQL文がWebサーバーで組み立てられるので、ブラウザをいくらいじってもDBサーバーの中の非公開データは見えない。
・DBサーバーにログインするときに必要なユーザー名/パスワードはサーバーだけが知っていれば良い。
という2点から、セキュリティ面で有利です。
もし仮に、Android端末上のアプリから、インターネット上に存在するDBサーバーに対して直接処理命令(SQL)を送信する方法でアプリを書くと、
DBのログインデータやSQL文を、端末無いのアプリに書き込んでおく必要があります。
それは素人にバレないだけで、詳しい人に言わせればDBから全データをかっぱらうのに必要な、全使用をオープンにしているのに等しいのです。
万が一脆弱なアプリを故意に作成し、その結果ユーザーのプライバシーや業務上の秘密が盗まれた場合、違法となる可能性があります。
コレはどう考えてもマズいでしょ?
こういう場合、Webアプリケーション同様に、WebサーバーとAndroid端末がHTTPで通信を行い、WebサーバーがSQLを組み立ててDBと通信するというのが正しい作り方です。これ以外の作り方はダメです。

質問の内容を読む限り、Androidからインターネット経由でSQL文をDBに送りたいように読めますが、その方式で上記のセキュリティ基準を満たすのはまず不可能。


2012年9月11日火曜日 1時09分52秒 UTC+9 成豪 柿沼:

Satoshi Miura

unread,
Sep 15, 2012, 11:52:33 AM9/15/12
to android-g...@googlegroups.com

三浦です。

webアプリ以外からDBにつなげるのはだめと
言い切るのはどうでしょう。
webアプリなら大丈夫とも言い切れません。

jdbcを使用してネット経由でDBとやりとりするのは
問題なのでしょうか。

DBの接続情報をapkに含むのは
まずいと思いますが、
公開しない自分専用のアプリであれば構わないとも思います。

2012/09/15 23:44 "Seitaro Kawamura" <seita...@gmail.com>:
--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/qr4XWo6G1V8J にアクセスしてください。

さとう

unread,
Sep 15, 2012, 3:32:28 PM9/15/12
to android-g...@googlegroups.com
さとうです。

> jdbcを使用してネット経由でDBとやりとりするのは
> 問題なのでしょうか。

ホスティング側が許しているならやっても良いと思います。
しかし通常は、sshなどを使って通信路を暗号化するのではないでしょうか。
さもないと、DBのユーザ名とパスワードが平文で
インターネット上を流れる事になると思います。

もしユーザ名とパスワードが第三者にバレてDBにアクセスされると、
場合によっては、不正アプリが収集した個人データの保管庫として
勝手に使われるかもしれません。
//

2012年9月16日 0:52 Satoshi Miura <mur...@gmail.com>:

Satoshi Miura

unread,
Sep 15, 2012, 8:49:40 PM9/15/12
to android-g...@googlegroups.com

三浦です。

さとうさんありがとうございます。
やはりホスティング側の許可次第と、
通信経路の暗号化ですよね。

今回の場合はレンタルサーバのようなので、
きっと許可してないでしょうね。

2012/09/16 4:32 "さとう" <mitsuru...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages