Android - 访问Mysql数据库-communicationsexception

时间:2013-03-13 08:55:23

标签: android mysql jdbc android-4.2-jelly-bean android-2.2-froyo

我正在开发的应用程序有问题。 我正在尝试连接到Mysql中的数据库,该数据库位于WIFI网络中的本地,我的应用程序位于android上。 我用这个,一个直接的方法,用mysql-connector-java 5.1.23。 该应用程序在我的nexus one(Android 2.3)上正常运行。但不是我的nexus 7(Android 4.2) 我收到了错误:"com.mysql.jdbc.exceptions.jdbc4.communicationsexception communications link failure"

但是,在我的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();
        }  
    }
}

1 个答案:

答案 0 :(得分:0)

我昨天看到另一位开发者,我可以解决我的问题。 我的功能是在主线程中,所以Android 4.2阻止它,因为它太慢了...... Android 2.3并非如此。 我尝试在Asynctask中创建我的函数,它可以正常工作。

感谢您的回答。