1412ZCD 2024-04-17 15:06 采纳率: 0%
浏览 4

Android Studio 中try语句异常

为什么写了try还是报错,是照学习视频打的代码,运行有错
为什么写了try还是报错,是照学习视频打的代码,运行有错

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-17 15:06
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试在 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();
        }
    }
    

    这里有几个关键更改:

    1. SQLiteOpenHelperSQLiteDatabase 的实例放入 try 块内。
    2. 使用 try-with-resources 语法,这样在 try 块结束后,会自动调用这些资源的 close 方法,从而关闭数据库连接。
    3. whereArgs 数组初始化时,将 drinkId 转换为字符串。

    现在,你应该可以正常编译并运行这段代码,而不会收到关于缺少 try-with-resources 的警告了。如果你仍然遇到问题,请检查其他可能的语法错误或逻辑错误。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月17日

悬赏问题

  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题