2013-01-07 2 views
0

올바른 IP : Port가있어서 통신 문제가 어디에서 발생했는지 알 수 없으므로 communicationsexception은 깨진 URL에서 온 것입니다 : mysql 데이터베이스 용 포트 .안드로이드 : 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 

콘솔은 "성공"을 읽고 인쇄하지만 그 다음에 충돌이 발생하므로 문제가 연결되었음을 의미하는 "성공 2"가 인쇄되지 않습니다.

나는 인터넷에서이 문제를 찾으려고했지만 포트/데이터베이스가 정확해야한다는 것이 모두 나와 맞았다. 그러나이 URL과 포트를 사용하여 로그인 할 수 있기 때문에 올바른 것으로 보인다. mysql을 누른 다음 phpMyAdmin과 im을 데이터베이스에서 클릭한다. 사전

+0

매니페스트에서 인터넷에 연결할 수있는 권한이 있는지 확인하십시오. – Bartek

+0

허락 해 주셔서 감사합니다. 비록 내가 여전히 같은 오류가 발생하고 첫 번째 "성공"이후의 스크립트 버그가 콘솔에 출력됩니다. – user1953302

+0

이 대답의 제안을보십시오 - http://stackoverflow.com/a/12233178/392781. – Bartek

답변

1

사용 AsyncTask를에서

감사합니다. 당신의 시도는 블록 코드 asynctask의 doInBackground 방법에 쓰십시오. 시도 해봐.

관련 문제