Java Android postgresql连接

Java Android postgresql连接,java,android,database,postgresql,jdbc,Java,Android,Database,Postgresql,Jdbc,我想从手机连接到电脑上的数据库。我使用JDBC来实现这一点。但我无法接通。我可以使用不同的SQL客户端应用程序连接到数据库。我已经添加了postgresql jdbc驱动程序项目 try { Class.forName("org.postgresql.Driver"); Connection connection = null; connection = DriverManager.getConnection("jdbc:postgresq

我想从手机连接到电脑上的数据库。我使用JDBC来实现这一点。但我无法接通。我可以使用不同的SQL客户端应用程序连接到数据库。我已经添加了postgresql jdbc驱动程序项目

    try {
        Class.forName("org.postgresql.Driver");
        Connection connection = null;
        connection = DriverManager.getConnection("jdbc:postgresql://192.168.1.40:5432/postgres","postgres","1");
        connection.setAutoCommit(false);

    } catch (SQLException e) {
        txt.setText("Connection failed :"+e.getMessage());

        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        txt.setText("Library not found");

        e.printStackTrace();
    }

        }
    });
错误代码:

    E/org.postgresql.Driver: Unexpected connection error: 
                     android.os.NetworkOnMainThreadException
                         at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1156)
                         at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
                         at libcore.io.IoBridge.connectErrno(IoBridge.java:159)
                         at libcore.io.IoBridge.connect(IoBridge.java:112)
                         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
                         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:475)
                         at java.net.Socket.connect(Socket.java:861)
                         at org.postgresql.core.PGStream.<init>(PGStream.java:62)
                         at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)
                         at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
                         at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:194)
                         at org.postgresql.Driver.makeConnection(Driver.java:431)
                         at org.postgresql.Driver.connect(Driver.java:247)
                         at java.sql.DriverManager.getConnection(DriverManager.java:179)
                         at java.sql.DriverManager.getConnection(DriverManager.java:144)
                         at yube.com.databaseconnection.MainActivity$1.onClick(MainActivity.java:37)
                         at android.view.View.performClick(View.java:4463)
                         at android.view.View$PerformClick.run(View.java:18789)
                         at android.os.Handler.handleCallback(Handler.java:808)
                         at android.os.Handler.dispatchMessage(Handler.java:103)
                         at android.os.Looper.loop(Looper.java:193)
                         at android.app.ActivityThread.main(ActivityThread.java:5307)
                         at java.lang.reflect.Method.invokeNative(Native Method)
                         at java.lang.reflect.Method.invoke(Method.java:515)
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:831)
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:647)
                         at dalvik.system.NativeStart.main(Native Method)
E/org.postgresql.Driver:意外连接错误:
android.os.NetworkOnMainThreadException
在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1156)
在libcore.io.BlockGuardOs.connect上(BlockGuardOs.java:84)
在libcore.io.IoBridge.ConnecterNo(IoBridge.java:159)中
在libcore.io.IoBridge.connect上(IoBridge.java:112)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:475)
位于java.net.Socket.connect(Socket.java:861)
位于org.postgresql.core.PGStream(PGStream.java:62)
位于org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)
位于org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
位于org.postgresql.jdbc.PgConnection.(PgConnection.java:194)
位于org.postgresql.Driver.makeConnection(Driver.java:431)
位于org.postgresql.Driver.connect(Driver.java:247)
位于java.sql.DriverManager.getConnection(DriverManager.java:179)
位于java.sql.DriverManager.getConnection(DriverManager.java:144)
在yube.com.databaseconnection.MainActivity$1.onClick(MainActivity.java:37)
在android.view.view.performClick上(view.java:4463)
在android.view.view$PerformClick.run(view.java:18789)
位于android.os.Handler.handleCallback(Handler.java:808)
位于android.os.Handler.dispatchMessage(Handler.java:103)
位于android.os.Looper.loop(Looper.java:193)
位于android.app.ActivityThread.main(ActivityThread.java:5307)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:831)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:647)
在dalvik.system.NativeStart.main(本机方法)

您能帮助我吗。

例外情况是您试图在主线程上建立网络连接。这在严格模式下是不允许的,因为这会使你的应用程序无响应

您有两个选择:

  • 使用新线程或异步任务连接到数据库

  • 修改线程策略(仅建议用于测试连接进程)

    StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.Builder().permitAll().build())


  • 你能和本地主机连接吗?