2013-01-07 67 views
0

我有正确的IP:端口,所以我不知道问题在哪里,因为communicationsexception来自破损的url:用于mysql数据库的端口。Android:com.mysql.jdbc.exceptions.jdbc4.communicationsexception通信链接失败

package com.bbb.aaa; 

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

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

private static final String url = "jdbc:mysql://uk1.khttp.net:2083/thedatabase"; // uk1.khttp.net == 95.154.195.28 
private static final String user = "theusername"; 
private static final String pass = "thepassword"; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    System.out.println("About to try instantiating driver"); 


TextView tv = (TextView)this.findViewById(R.id.text_view); 
try { 
    Class.forName("com.mysql.jdbc.Driver"); 
    System.out.print("success"); 
    Connection con = DriverManager.getConnection(url, user, pass); 
    String result = "Database connection success\n"; 
    System.out.print("success2"); 
    Statement st = con.createStatement(); 
    ResultSet rs = st.executeQuery("SELECT * FROM testingregistration"); 
    System.out.print("success3"); 
    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); 

    tv.setText("Driver instantiated"); 
    } catch (ClassNotFoundException e) { 
    // TODO Auto-generated catch block 

    tv.setText(".....Class com.mysql.jdbc.Driver not found!"); 
    e.printStackTrace(); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     tv.setText(e.toString()); 
    } 

} 

} 

ERROR LOG: The last packet sent successfuly to the server was 0 milliseconds ago. The driver has not recieved any packets from the server 

控制台读取和打印“成功”,但随后后崩溃所以它不打印“success2”,这意味着问题是在连接。

我试过在网上搜索这个问题,但他们说的是你的ip:port和数据库应该是正确的,但对我来说这似乎是正确的,因为我可以使用该URL和端口的登录和密码的详细信息登录到然后从那里我点击phpMyAdmin和IM在数据库中。

在此先感谢

+0

确保您已获得在清单中连接到Internet的权限。 – Bartek

+0

感谢您提醒我添加权限。虽然我仍然遇到同样的错误,并且在控制台中打印出第一个“成功”后出现脚本错误 – user1953302

+0

查看此答案中的建议 - http://stackoverflow.com/a/12233178/392781。 – Bartek

回答

1

使用的AsyncTask。你的try catch块代码写入doInBackground asynctask的方法。尝试一下。

相关问题