web-dev-qa-db-ja.com

Androidをデータベースサーバーに接続する方法

サンプルはありますか? Androidアプリケーションがあり、マシンのmysqlサーバーに接続する必要があります。最善の方法は何ですか?

Jdbcは使用しないでください。ここで説明します

インターネット接続を介して、データベース、プラットフォーム、クライアント、場所を問わず、データベースドライバを使用しないでください。モバイルの場合は2倍になります。データベースドライバはLAN操作用に設計されており、不安定な/断続的な接続や高遅延用には設計されていません。

そして行くべきです:

DefaultHttpClient httpclient = new DefaultHttpClient(); 

しかし、接続を開く方法や単純なSQLステートメントを実行する方法の例はありません。誰かが私を助けることができますか?

9
Alex

Webサービスを使用するか、HTTPハンドラーを実装してRESTfulな方法で転送する必要があります。

9
Josh Bolton

AndroidアプリケーションからDatabaseServerに接続しようとしましたが、jtds jarファイルを使用する代わりにjtds、jarパッケージをデータベースドライバーサポートに使用しているときに、最初は問題が発生しました。mysql-Connectorjarファイルを使用します。データベースドライバのサポート。mysql-connectorjarファイル「mysql-connector-Java-5.1.24-bin.jar」。このjarファイルをprojectslibsフォルダに配置します。

少しのコードスニペット:

`String url="jdbc:mysql://(IP-of databaseServer):3306/DBNAME";`
`String driver="org.gjt.mm.mysql.Driver";`
`String username="XYZ";//user must have read-write permission to Database
`String password= "*********";`//user password

`try{
    Class.forName(driver).newInstance();//loading driver
    Connection con = DriverManager.getConnection(url,username,password);
    /*once we get connection we can execute ths SQL command to Remote Database Server with the help mysql-connector driver over Internet*/

}`    
`catch(Exception e){
    e.printStackTrace();
}`

私はそれがうまくいくことを願っています。

乾杯ラジェッシュPヤダブ。

2
Rajesh Kumar

私は オフラインファースト のファンです。つまり、アプリは接続なしで使用できるはずです。

これを容易にするために、SQLiteローカルデータベースを使用し、オンライン時にリモートデータベースに同期することをお勧めします。

SymmetricDS または Daffodil Replicator のようなツールを使用して、HTTP(S)を介してローカルデータベースとリモートデータベースを同期できます。

2
Neil McGuigan

MySQLサーバーに接続するには、MySQLクライアントが必要です。 AndroidにはMySQLライブラリは付属していません。一般的なJava MySQLライブラリを使用して、Androidで動作するようにファッジすることができる場合がありますが、大きな仕事と無駄な時間。

あなたが指摘したリンクは、あなたがやろうとしていることがそもそも間違っていることをすでにあなたに伝えました。インターネット経由でデータベースに接続しないでください!サーバー上に、HTTPリクエストに応答し、データベース内のデータを検索して、HTTP経由で送り返すものが必要になります。リンクにはすでにいくつかのオプションが記載されています。自分で何かを書くこともできますが、独自のアプローチを安全でハッキング防止にするよりも、既存のソリューションを使用する方が簡単な可能性があります。

2
EboMike

MySQLデータベースはそのプロトコルで動作しないため、HttpClientを使用してMySQLデータベースに直接接続することはできません。

リンクした質問への回答の2番目の部分では、Webサービスを使用し、それらを使用してデータベースサーバーと通信することをお勧めします。これはまさに、HttpClientで実行できることです。

0
LizB

複数の電話間でデータを共有する必要がある場合は、Webサービスとして公開することをお勧めします。その特定の電話でのみデータにアクセスする必要がある場合(そしてリレーショナルを維持したい場合)、sqliteを使用できます。

0
Octoberdan