【问题标题】:NetworkOnMainThreadException while accessing a postgresql database访问 postgresql 数据库时出现 NetworkOnMainThreadException
【发布时间】:2016-06-01 06:45:21
【问题描述】:

好吧,尝试使用 Android 访问 postgresql 数据库,我得到了以下,非常令人惊讶的异常:

org.postgresql.util.PSQLException:发生了异常情况导致驱动程序失败。请报告此异常。 在 org.postgresql.Driver.connect(Driver.java:305) 在 java.sql.DriverManager.getConnection(DriverManager.java:179) 在 java.sql.DriverManager.getConnection(DriverManager.java:213) 在 org.pbdevelopement.cineapp.NetReader.getConnection(NetReader.java:42) 在 org.pbdevelopement.cineapp.MainActivity.getPersonalMovies(MainActivity.java:242) 在 org.pbdevelopement.cineapp.MainActivity.onCreate(MainActivity.java:115) 在 android.app.Activity.performCreate(Activity.java:6034) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442) 在 android.app.ActivityThread.access$800(ActivityThread.java:156) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:211) 在 android.app.ActivityThread.main(ActivityThread.java:5373) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815) 引起:android.os.NetworkOnMainThreadException 在 android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1151) 在 java.net.InetAddress.lookupHostByName(InetAddress.java:418) 在 java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) 在 java.net.InetAddress.getByName(InetAddress.java:305) 在 java.net.InetSocketAddress.(InetSocketAddress.java:105) 在 java.net.InetSocketAddress.(InetSocketAddress.java:90) 在 org.postgresql.core.PGStream.(PGStream.java:61) 在 org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:129) 在 org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:65) 在 org.postgresql.jdbc.PgConnection.(PgConnection.java:159) 在 org.postgresql.Driver.makeConnection(Driver.java:415) 在 org.postgresql.Driver.connect(Driver.java:283) ... 18 更多

我不知道如何解决这个问题,我也不知道向哪里报告……有人有什么想法吗?

【问题讨论】:

  • 您可以在这里报告 Postgresql JDBC 错误:jdbc.postgresql.org/community/mailinglist.html
  • 为什么这个问题被否决了?
  • @bradimus 你怎么看,这值得报道吗?还是我只是愚蠢地正确使用他们的驱动程序而不值得更好? ;)

标签: java android postgresql exception


【解决方案1】:

您似乎正试图通过应用程序主线程上的网络操作来执行您的数据库请求。这会引发异常 android.os.NetworkOnMainThreadException,因为 Android 中的每个网络操作都必须在自己的线程中启动。尝试在AsyncTask 中执行您的数据库请求。

AsyncTask

【讨论】:

  • 同意。检查堆栈跟踪中列出的代码:at org.pbdevelopement.cineapp.NetReader.getConnection(NetReader.java:42) at org.pbdevelopement.cineapp.MainActivity.getPersonalMovies(MainActivity.java:242) at org.pbdevelopement.cineapp.MainActivity.onCreate(MainActivity.java:115) 并在主线程之外的某个地方实现。
  • 嗯,听起来很合理......但它不应该抛出不同的异常吗?
猜你喜欢
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多