如何在本机代码中访问 SQLite 数据库?

Din*_*mar 8 android flutter

我已经使用sqflite插件在 flutter 中创建了数据库。我在 android native 中为我的应用程序创建了 android 主屏幕小部件。现在我需要从 SQLite 获取数据。那就是我正在尝试使用 Android Native sqflite Package 从 SQLite 数据库中获取数据。那可能吗?

Mal*_*una 2

> Flutter 没有限制

Sqlite的基本规则,你需要记住

  1. sqflite 适用于 SQLite 数据库之上
  2. 因此,当 flutter 插件创建数据库时,它可用于本机代码(验证文件夹结构)
  3. 您可以通过在本机 Android 或 IOS 上为 SQLiteDatabase 提供数据库路径来打开数据库
  4. 最后你可以通过query()读取表数据

在此输入图像描述

    private fun accessDB(){

    try {
        GlobalScope.launch {

            var db:SQLiteDatabase = SQLiteDatabase.openDatabase(getDatabasePath("epistle.db").absolutePath,null,SQLiteDatabase.OPEN_READWRITE);

            Log.d(MainActivity::class.java.name , "Database Path "+db.path.toString())
            Log.d("" , "Database version "+db.version.toString())

            var cursor = db.query("userInfo",null,null,null,null,null,null)

            cursor?.let {
                while (cursor.moveToNext()){

                    var columnNames =cursor.columnNames

                    columnNames.forEach {
                        Log.d(
                                MainActivity::class.java.name,
                                "$it "+cursor.getString(cursor.getColumnIndex(it))
                        )
                    }

                }
            }

        }

    }catch (e:Exception){
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

    private fun accessDB(){

    try {
        GlobalScope.launch {

            var db:SQLiteDatabase = SQLiteDatabase.openDatabase(getDatabasePath("epistle.db").absolutePath,null,SQLiteDatabase.OPEN_READWRITE);

            Log.d(MainActivity::class.java.name , "Database Path "+db.path.toString())
            Log.d("" , "Database version "+db.version.toString())

            var cursor = db.query("userInfo",null,null,null,null,null,null)

            cursor?.let {
                while (cursor.moveToNext()){

                    var columnNames =cursor.columnNames

                    columnNames.forEach {
                        Log.d(
                                MainActivity::class.java.name,
                                "$it "+cursor.getString(cursor.getColumnIndex(it))
                        )
                    }

                }
            }

        }

    }catch (e:Exception){
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)