0

我遇到了正在開發的應用程序的問題。 我想連接到Mysql中的數據庫,這是在我的應用程序在Android上的WIFI網絡中的本地。 我用這個,一個直接的方法,用mysql-connector-java 5.1.23。 該應用程序適用於我的聯繫人之一(Android 2.3)。但不是在我的nexus 7(Android 4.2)上。
我得到了錯誤:"com.mysql.jdbc.exceptions.jdbc4.communicationsexception communications link failure"Android - 訪問Mysql數據庫-communicationsexception

但是,在我的nexus 7上使用市場(connect2sql)的應用程序,我可以輕鬆訪問數據庫。 我想(但我不明白)這個錯誤與Android版本(2.3 vs 4.2)有關。 是否有人已經遇到過這個問題?

非常感謝您對這個主題的任何幫助。

(我使用Eclipse與JDK 1.6開發 - 目標API爲17,對應於Android的4.2)

這是代碼:

package fr.apln.Rocketry_Challenge; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.sql.SQLException; 

public class testdirectmysql extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.screen_testphpmysql); 

     try { 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     Connection con = DriverManager.getConnection("jdbc:mysql://192.168.1.50:3306/Rocketry_Challenge_1", "android", "XXXXX"); 

     Statement st = con.createStatement(); 
     st.executeQuery("USE Rocketry_Challenge_1;"); 
     Toast.makeText(this, "C'est passé", Toast.LENGTH_LONG).show(); 
     ResultSet rs = st.executeQuery("SELECT * FROM projets;"); 
     while(rs.next()) { 
     Toast.makeText(this, "Projet : "+rs.getString(2)+"/Club : "+rs.getString(3), Toast.LENGTH_LONG).show(); 

     } 
     } catch (Exception e) { 
      Toast.makeText(this, String.valueOf(e), Toast.LENGTH_LONG).show(); 
     } 
    } 
} 
+0

你可以發佈你的代碼嗎? – 2013-03-13 08:58:50

+1

我認爲遠程直接連接數據庫服務器是不可取的。 Web服務/ API將是理想的。 – 2013-03-13 09:00:34

+0

感謝硬編碼,因爲數據庫是在本地網絡(無線WIFI可用),我沒有安全問題。一個Web服務在PHP(例如)是較重的實現低附加值我猜... – Newos 2013-03-13 10:36:15

回答

0

我看到了另一個開發商昨天,我能解決我的問題。 我的功能是在主線程中,所以Android 4.2阻止它,因爲它太慢了... 這不是Android 2.3的情況。 我試着讓我的函數在Asynctask中正常工作。

謝謝你的回答。