내가 개발하는 응용 프로그램에 문제가 있습니다. 안드로이드에서 내 응용 프로그램과 함께 WIFI 네트워크의 로컬에있는 MySQL의 데이터베이스에 연결하려고합니다. mysql-connector-java 5.1.23을 사용하여이 방법을 직접 사용합니다. 응용 프로그램이 내 넥서스 1 (Android 2.3)에서 제대로 작동합니다. 하지만 내 넥서스 7 (Android 4.2)에는 없습니다.
나는 오류가있어 내 넥서스 7에 시장 (connect2sql)의 응용 프로그램을 사용하여, 그러나 "com.mysql.jdbc.exceptions.jdbc4.communicationsexception communications link failure"
안드로이드 - MySQL 데이터베이스에 대한 액세스 - 통신 연결
을, 나는 쉽게 데이터베이스에 액세스 할 수 있습니다. 오류는 Android 버전 (2.3 vs 4.2)과 관련이 있다고 생각합니다 (하지만 이해할 수는 없습니다). 누군가이 문제를 이미 해결 했습니까?
문제에 대한 도움을 주셔서 대단히 감사드립니다.
(내가 JDK 1.6 개발하기 위해 Eclipse를 사용 - 대상 API는 안드로이드 4.2에 해당하는 17)
이것은 코드입니다 :
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();
}
}
}
코드를 게시 할 수 있습니까? –
나는 데이터베이스 서버에 원격 직접 연결하는 것은 좋지 않다고 생각한다. 웹 서비스/API가 이상적입니다. –
데이터베이스가 로컬 네트워크 (WIFI 사용 가능)에 있기 때문에 하드 코드를 작성해 주셨습니다. 보안 문제가 없습니다. PHP에서 Webservice (예를 들어) 내가 생각하는 낮은 부가 가치에 대한 무거운 구현입니다 ... – Newos