Android Studio按钮点击触发SQLException及调试无法进入事件问题求解
问题解决思路
- 首先修复SQL语法错误
你当前的查询语句缺少WHERE关键字,会直接触发SQL解析异常,是抛出SQLException的核心原因:
// 错误写法,缺失WHERE关键字 pstmt= connection.prepareStatement("select FEC_IX_VERSIONE from FE_CONTROL FEC_CODICE = ?"); // 修正后的写法 pstmt= connection.prepareStatement("select FEC_IX_VERSIONE from FE_CONTROL WHERE FEC_CODICE = ?");
- 修复方法名大小写错误
Java语法对方法名大小写敏感,你catch块中写的getmessage()拼写错误,异常触发时会直接抛出方法不存在错误,导致应用直接崩溃:
// 错误写法 typeApi.setText(throwables.getmessage()); // 修正后的写法 typeApi.setText(throwables.getMessage());
- 解决调试时控件不显示、断点无法进入点击事件的问题
你把所有JDBC查询操作都放在主线程onCreate方法中执行,JDBC属于耗时操作,会阻塞主线程的UI渲染流程,导致控件迟迟无法加载完成,点击事件也没有完成绑定,自然无法触发断点。
建议把所有数据库操作移到子线程执行,可以用Thread+runOnUiThread组合更新UI,或是使用AsyncTask、WorkManager等组件,避免阻塞主线程。 - 优化数据库连接逻辑
全局持有的数据库长连接非常容易因为网络波动、超时等原因失效,点击按钮时用失效的连接执行查询也会抛出SQLException。建议每次执行查询时新建连接,操作完成后立刻关闭连接、ResultSet、Statement等资源,避免资源泄漏和连接失效问题。 - 安全性优化(强烈建议)
Android端直接使用JDBC连接远程Oracle数据库属于不推荐的实现方式:一是JDBC驱动体积大,会增加安装包体积;二是数据库账号密码直接写在客户端代码中,很容易被反编译泄露,导致数据库被攻击。建议改为后端封装HTTP接口提供数据查询能力,Android端通过HTTP请求获取数据。
内容的提问来源于stack exchange,提问作者Scripta14
相关产品推荐
相关产品推荐

