我开始使用devolop,我有这个问题。我可以连接到postgresql的localhost服务器(在PGADMIN上测试并在Android Studio的界面上运行JAVA程序。 但是当我尝试在我的APP(在虚拟Android模拟器中)中创建同一个类的实例时,我得到了这个日志猫;
06-27 01:16:49.405 11469-11469 / setup.hola2 I / System.out: ***** PostgreSQL JDBC连接测试***** 06-27 01:16:49.407 11469-11469 / setup.hola2 I / System.out:PostgreSQL JDBC驱动程序 注册! 06-27 01:16:49.424 11469-11469 / setup.hola2 W / System.err: 连接失败,检查控制台|||||||||||||||| 06-27 01:16:49.424 11469-11469 / setup.hola2 W / System.err:发生了异常情况 导致驱动程序失败。请报告此例外情况。 06-27 01:16:49.543 11469-11485 / setup.hola2 W / EGL_emulation: eglSurfaceAttrib未实施06-27 01:16:49.543 11469-11485 / setup.hola2 W / OpenGLRenderer:设置失败 表面上的EGL_SWAP_BEHAVIOR 0xa5479360,错误= EGL_SUCCESS
所以在恢复中,连接在Android应用程序之外工作......
我想这可能会发生,因为我必须使用类"扩展AsyncTask"在我的课上,但我无法......有人可以给我一些帮助吗?
在MainActivity.java上:
@Override
public void onSelectedDayChange(CalendarView view, int year, int month,
int dayOfMonth) {
//Toast.makeText(getApplicationContext(), ""+dayOfMonth, 0).show();// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Hola !!!", 0).show();// TODO Auto-generated method stub
txtConsulta = consulta1.iniciar();
miEditText.setText(txtConsulta);
}
连接类是这样的:
package setup.hola2;
import android.os.AsyncTask;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;
public class PostgreSqlJDBC {
private static final String DB_DRIVER = "org.postgresql.Driver";
public static void main(String[] argc) {
String x = iniciar();
}
public static String iniciar() {
System.out.println("***** PostgreSQL JDBC Connection Testing *****");
try {
Class.forName(DB_DRIVER);
} catch (ClassNotFoundException e) {
System.err.println("Please add PostgreSQL JDBC Driver in your Classpath ");
System.err.println(e.getMessage());
return "Please add PostgreSQL JDBC Driver in your Classpath ";
}
System.out.println("PostgreSQL JDBC Driver Re`enter code here`gistered!");
Connection connection1;
Statement stmt = null;
try {
String url = "jdbc:postgresql://localhost:5432/ulife";
connection1 = DriverManager.getConnection(url, "postgres","XXXXX");
} catch (SQLException e) {
System.err.println("Connection Failed, Check console ||||||||||||||||");
System.err.println(e.getMessage());
return e.getMessage();
}
if (connection1 == null) {
System.out.println("Connection Failed !");
} else {
System.out.println("Connection established!");
try {
stmt = connection1.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM activities");
while (rs.next()) {
int id = rs.getInt("IdActivity");
String Nombre = rs.getString("NameActivity");
System.out.println("Id = " + id);
System.out.println("Nombre = " + Nombre);
System.out.println("------------------------");
}
rs.close();
stmt.close();
return "String desde clase";
} catch (SQLException e) {
System.out.println("Falló conexión a la Bdd Ulife");
e.printStackTrace();
return "Falló conexión a la Bdd Ulife";
}
}
return "fin";
}
}
答案 0 :(得分:0)
最后它可行,解决方案只是扩展AsyncTask,导致Android保护运行时环境免受冻结进程,所以当你扩展AsyncTask时启动另一个并行线程,在恢复中你必须像这样扩展连接类:
public class PostgreSqlJDBC extends AsyncTask <Void, Void, Void> {
static String cadenaConexion = "jdbc:postgresql://YOUR_HOST/YOUR_BDD?" + "user=postgres&password=YOURPASSWORD";
static String respuestaSql= "vacia";
public PruebaConn() {
}
public String getRespuestaSql (){
execute();
return respuestaSql;
}
@Override
public Void doInBackground(Void... params) {
Connection conexion = null;
Statement sentencia = null;
ResultSet resultado = null;
try {
Class.forName("org.postgresql.Driver");
conexion = DriverManager.getConnection(cadenaConexion);
sentencia = conexion.createStatement();
String consultaSQL = "SELECT * FROM activities";
resultado = sentencia.executeQuery(consultaSQL);
respuestaSql = "";
while (resultado.next()) {
int id = resultado.getInt("IdActivity");
String Nombre = resultado.getString("NameActivity");
respuestaSql = respuestaSql + id + " | " + Nombre + "\n";
}
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
System.err.println("Error: Cant connect!");
conexion = null;
} finally {
if (resultado != null) {
try {
resultado.close();
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
if (sentencia != null) {
try {
sentencia.close();
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
if (conexion != null) {
try {
conexion.close();
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
}
System.err.println("----- PostgreSQL query ends correctly!-----");
return null;
}
}