ruaka 2023-04-17 12:11 采纳率: 100%
浏览 49
已结题

android studio 里获取sqlite中的行数并进行判断

如何在Android studio中使用sqlite的count函数来获取满足条件的行数并进行判断操作。
具体情形如下:数据库中有4行,分别对应4个任务,这些任务有一个“是否完成”的属性,具体的取值为0或1。如果4个任务的取值都为1,则对话框显示任务结束;如果有任务的取值为0,则对话框显示任务没有结束。
我想使用execSQL()方法来执行一个带有count函数的sql语句,从而获得“是否完成”属性为1的任务数量,如果值为4则认为完成,不为4则没有完成。但是execSQL()返回的值并不是一个int类型,没有办法让其与4进行比较。
有没有办法能够实现上述功能。

  • 写回答

5条回答 默认 最新

  • 社区专家-Monster-XH 2023-04-17 12:18
    关注

    基于Monster 组和GPT的调写:
    用Android提供的SQLiteOpenHelper类来访问数据库。以下是一个示例代码,用于获取"是否完成"属性为1的任务数量,并根据数量判断任务是否结束:

    // 定义SQLiteOpenHelper类来访问数据库
    class MyDatabaseHelper extends SQLiteOpenHelper {
        private static final String DB_NAME = "mydatabase.db";
        private static final int DB_VERSION = 1;
    
        public MyDatabaseHelper(Context context) {
            super(context, DB_NAME, null, DB_VERSION);
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("CREATE TABLE tasks (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, completed INTEGER)");
            db.execSQL("INSERT INTO tasks (name, completed) VALUES ('Task 1', 0)");
            db.execSQL("INSERT INTO tasks (name, completed) VALUES ('Task 2', 1)");
            db.execSQL("INSERT INTO tasks (name, completed) VALUES ('Task 3', 1)");
            db.execSQL("INSERT INTO tasks (name, completed) VALUES ('Task 4', 1)");
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // 升级数据库
        }
    }
    
    // 在Activity中使用MyDatabaseHelper类来访问数据库
    public class MainActivity extends AppCompatActivity {
        private MyDatabaseHelper dbHelper;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            dbHelper = new MyDatabaseHelper(this);
    
            int completedCount = getCompletedCount();
            if (completedCount == 4) {
                // 所有任务都已完成
                showDialog("任务结束");
            } else {
                // 存在未完成的任务
                showDialog("任务没有结束");
            }
        }
    
        // 获取"是否完成"属性为1的任务数量
        private int getCompletedCount() {
            SQLiteDatabase db = dbHelper.getReadableDatabase();
            Cursor cursor = db.rawQuery("SELECT COUNT(*) FROM tasks WHERE completed=1", null);
            cursor.moveToFirst();
            int count = cursor.getInt(0);
            cursor.close();
            db.close();
            return count;
        }
    
        // 显示对话框
        private void showDialog(String message) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage(message)
                    .setPositiveButton("确定", null)
                    .show();
        }
    }
    
    
    

    定义了一个名为"tasks"的表,其中包含任务的名称和完成状态。在onCreate()方法中初始化了4个任务。在getCompletedCount()方法中,使用rawQuery()方法执行了一个带有count()函数的SQL语句,用于获取"是否完成"属性为1的任务数量。最终,根据任务数量的值,显示相应的对话框。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 已采纳回答 4月18日
  • 赞助了问题酬金15元 4月17日
  • 创建了问题 4月17日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改