为什么写了try还是报错,是照学习视频打的代码,运行有错
为什么写了try还是报错,是照学习视频打的代码,运行有错
Android Studio 中try语句异常
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
看起来你在尝试在
onFavoriteClicked
方法中更新 SQLite 数据库时遇到了一个错误。这个错误信息表明你需要使用 try-with-resources 语句来处理SQLiteDatabase
对象,因为这是 Android 开发的最佳实践,它能确保数据库连接在使用完毕后被正确关闭。这里是修改后的代码,使用了 try-with-resources 语句,并且对代码格式进行了调整以便更好地阅读:
public void onFavoriteClicked(View view) { Notifications notifications; CheckBox favorite = (CheckBox) view; ContentValues drinkValues = new ContentValues(); drinkValues.put("FAVORITE", favorite.isChecked()); int drinkId = getIntent().getExtras().getInt(EXTRA_DRINK_ID); // 使用 try-with-resources 语句管理数据库连接 try (SQLiteOpenHelper myHelper = new StarbuzzDatabaseHelper(this); SQLiteDatabase db = myHelper.getWritableDatabase()) { String whereClause = "_id=?"; String[] whereArgs = new String[]{String.valueOf(drinkId)}; int row = db.update( "DRINK", drinkValues, whereClause, whereArgs ); Log.d("sqlite", "update row" + row); } catch (SQLException e) { Log.e("sqlite", e.getMessage()); Toast.makeText(this, "database unavailable", Toast.LENGTH_SHORT).show(); } }
这里有几个关键更改:
- 将
SQLiteOpenHelper
和SQLiteDatabase
的实例放入 try 块内。 - 使用 try-with-resources 语法,这样在 try 块结束后,会自动调用这些资源的 close 方法,从而关闭数据库连接。
- 在
whereArgs
数组初始化时,将drinkId
转换为字符串。
现在,你应该可以正常编译并运行这段代码,而不会收到关于缺少 try-with-resources 的警告了。如果你仍然遇到问题,请检查其他可能的语法错误或逻辑错误。
解决 无用评论 打赏 举报 编辑记录- 将
悬赏问题
- ¥15 孟德尔随机化怎样画共定位分析图
- ¥18 模拟电路问题解答有偿
- ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
- ¥15 误删注册表文件致win10无法开启
- ¥15 请问在阿里云服务器中怎么利用数据库制作网站
- ¥60 ESP32怎么烧录自启动程序
- ¥50 html2canvas超出滚动条不显示
- ¥15 java业务性能问题求解(sql,业务设计相关)
- ¥15 52810 尾椎c三个a 写蓝牙地址
- ¥15 elmos524.33 eeprom的读写问题