2013-04-02 7 views
13

私はJDBCを使ってAndroidアプリケーションを使って、Webサービスを使わずにデータをデータベースに送ります。私はAndroid 2.2エミュレータを使って実験を行い、MySQL DB(LOCALHOST)にデータを送ることができました。 Android 2.2デバイスを使用して送信しようとした後、 jdbc:mysql://10.0.2.2:3306/からjdbc:mysql://xx.xx.xx.xx:3306/にパスを変更しました。Android:JDBCはAndroidデバイスでサポートされていますか?

xx.xx.xx.xxは、ローカルホストマシンのipconfigです。しかし、それはデバイスで動作していません。理由は何か。

主な疑問:

  1. Androidデバイスは、現在、JDBCをサポートしていますか?
  2. Android 2.2はJDBCをサポートしますか?
  3. サポートされている場合、どのAndroidバージョンでJDBCがサポートされますか?
+0

見てください!あなたの言及された疑いのどれもあなたの問題の原因ではありません、私の答えを見てください。 – Behnam

答えて

10

はい。 JDBC接続コードをAsyncTask、 に入れてください。そうしないと、BURN BURN!

+1

また、 "インターネットを使用する"アクセス許可の "インターネット"アクセス許可を誤ってはいけません。 JDBCを実行するには後者が必要です。 – Behnam

1

MySQL JDBC Connector 3.0.17をダウンロードし、アンドロイドプロジェクトビルドパスに追加してください。

import java.sql.Connection; 



import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.ResultSetMetaData; 
import java.sql.Statement; 
import android.app.Activity; 

輸入android.os.Bundle。 import android.widget.TextView;

public class MysqlSample01Activity extends Activity { 

private static final String url = "jdbc:mysql://<server>:<port>/<database>"; 
private static final String user = "<username>"; 
private static final String pass = "<password>"; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    testDB(); 
} 

public void testDB() { 
    TextView tv = (TextView)this.findViewById(R.id.text_view); 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con = DriverManager.getConnection(url, user, pass); 
     /* System.out.println("Database connection success"); */ 

     String result = "Database connection success\n"; 
     Statement st = con.createStatement(); 
     ResultSet rs = st.executeQuery("select * from table_name"); 
     ResultSetMetaData rsmd = rs.getMetaData(); 

     while(rs.next()) { 
      result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n"; 
      result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n"; 
      result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n"; 
     } 
     tv.setText(result); 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
     tv.setText(e.toString()); 
    } 

} 

}

+0

すでにJARファイルを追加してあり、私はあなたの例と同じでした。しかし、デバイスからは機能しません。どのように私はデバイス内のパスを与えることができます。 – sachi

+2

たぶん、ur IPはurファイアウォールでブロックされています。ファイアウォール設定で例外を追加しなければなりません。ルータを使用している場合は、ポートを転送する必要があります – Akilan

+1

私はこの種のコードを使用すると誰かが私のアプリケーションを解凍し、ポート、dbname、ユーザー、およびパスワードが間違っていますか? –

0

MySQLのインストールは、ローカルホストからの接続だけを許可するように聞こえます。任意のホストからの接続を許可するように、MySQLの設定を更新してください。

java.sqlはAPIレベル1以降サポートされていますが、サポートはいつでもすぐに削除されるとは思われません。

/トーマス

1

AndroidデバイスのサポートJDBCです。

Android 2.2はJDBCをサポートしますか?

サポートされている場合、どのAndroidバージョンでJDBCがサポートされますか。

NO AndroidはローカルにMySQLデータベースをサポートしていませんので、私たちは、Androidデバイス、そのサポートのみのSQLiteデータベースfrmo JDBC接続を使用することはできません。

サーバーからデータベースを使用する場合は、単純にWebサービスを作成し、データベースのすべての接続をサーバーから処理します。

しかし、それはあなたがJDBCとアンドロイド恐ろしいを理解するのに役立ちます! SO Question

+0

私はリモートのMySQL DBを使用する必要があります。私はWebサービスコールをしたくありません。 – sachi

+0

@sachi私は私の質問を編集しました! – dhams

関連する問題