-1

我是新手,正在尝试将 android 应用程序连接到我的 oracle 数据库。我当前的代码抛出错误:

android.os.NetworkOnMainThreadException ...

我的连接代码如下:

public class ConnectOra {

    public String driver, url, ip, bd, usr, pass;
    public Connection conexion;

    public ConnectOra(String ip, String bd, String usr, String pass) {

        driver = "oracle.jdbc.driver.OracleDriver";
        this.bd = bd;
        this.usr = usr;
        this.pass = pass;
        url = new String("jdbc:oracle:thin:@" + ip + ":1521:" + bd);

        try {

            Class.forName(driver).newInstance();
            conexion = DriverManager.getConnection(url, usr, pass);

            // revisan el log para ver que tira....
            System.out.println("Conexion a Base de Datos " + bd + " Exitosa");
        } catch (Exception exc) {
            System.out.println("Error al tratar de abrir la base de Datos "
                                 + bd + " : " + exc + "ricardo");

        }
}

public Connection getConexion() {
    return conexion;
}

public Connection CerrarConexion() throws SQLException {
    conexion.close();
    conexion = null;
    return conexion;
}
4

3 回答 3

1

正如错误提示的那样,你不能在主线程上进行网络连接......所以把它放在一个单独的线程中。

于 2013-04-12T23:04:23.310 回答
0

你应该实现 AsyncTask 并添加:到你的 android mainfest。

无论如何,从任何本地客户端到远程数据库的直接连接在安全方面是一个非常糟糕的做法,该模型几年前出于很好的原因而消失了,在这种情况下,在 Android 中,如果你有 apk 文件,你可以解压缩它,然后反编译 java 源文件以获取数据库凭据并获得对数据库的完全访问权限。

于 2014-04-28T22:27:36.237 回答
0

您必须使用另一个线程来执行网络任务。

我建议您使用AsyncTask

于 2013-04-12T23:42:42.063 回答