Android Studio无法连接PostgreSQL数据库问题排查求助
Android连接PostgreSQL失败排查方案
以下是针对你代码及环境的具体排查点和修复方案:
1. JDBC URL格式错误
你的代码中使用;分隔连接参数,这是错误的格式。PostgreSQL JDBC URL的参数需要用?开头,&分隔。修复后的URL代码:
ConURL = "jdbc:postgresql://" + ip + ":" + port + "/" + dbname + "?user=" + un + "&password=" + pass;
2. 主线程执行网络操作
Android禁止在UI主线程中执行网络请求,否则会触发NetworkOnMainThreadException。必须将数据库连接逻辑放到子线程中执行,示例代码:
new Thread(new Runnable() { @Override public void run() { Connection con = SQLConnection(); // 数据库操作逻辑 // 若需更新UI,需调用runOnUiThread回到主线程 runOnUiThread(() -> { Toast.makeText(MainActivity.this, "连接成功", Toast.LENGTH_SHORT).show(); }); } }).start();
3. 未添加网络权限
在AndroidManifest.xml中必须添加网络访问权限,否则应用无法访问局域网内的数据库:
<uses-permission android:name="android.permission.INTERNET"/>
4. 未正确引入PostgreSQL JDBC驱动
在Module的build.gradle文件中添加驱动依赖(选择与你的PostgreSQL服务器版本兼容的驱动版本,例如服务器为15.x时可使用42.6.x版本):
dependencies { implementation 'org.postgresql:postgresql:42.6.0' }
添加后同步Gradle,确保驱动被正确下载。
5. PostgreSQL服务器配置问题
- 检查
postgresql.conf中的listen_addresses配置,需设置为*或包含Android设备所在的IP段(如192.168.100.0/24),默认仅监听本地localhost。 - 检查
pg_hba.conf,添加允许Android设备IP访问的规则,例如:host testdb test_user 192.168.100.0/24 scram-sha-256
修改完成后重启PostgreSQL服务。
6. 网络连通性验证
确保Android设备与PostgreSQL服务器处于同一局域网,通过设备的终端工具ping服务器IP(192.168.100.79),若无法ping通则检查网络配置、服务器防火墙设置。
内容的提问来源于stack exchange,提问作者Pongsakorn Lakhornpol
相关产品推荐
相关产品推荐

