无法将我的Android Studio App与PostgreSQL连接

时间:2015-06-27 02:08:48

标签: java android postgresql

我开始使用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";
   }
}

1 个答案:

答案 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;
  }
}