2017-02-28 179 views
0

我想從我的手機連接到我的電腦上的數據庫。我爲此使用JDBC。但我無法建立聯繫。我可以使用不同的SQL Client應用程序連接到數據庫。我已經添加了postgresql jdbc驅動程序項目。Android postgresql連接

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) 

你能幫助我。

+0

你可以連接localhost嗎? –

回答

0

該例外說明您嘗試在主線程上建立網絡連接。嚴格模式下不允許這樣做,因爲這會使您的應用無法響應。

你有兩個選擇:

  1. 使用一個新的線程或的AsyncTask連接到你的數據庫

  2. 修改線程政策(建議僅測試連接過程)

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