gpt4 book ai didi

java - Android SQLite,onCreate() 未被调用

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:56 25 4
gpt4 key购买 nike

我一直在努力在我的 Android 应用程序中创建 SQLite 数据库。我看过很多教程,以及关于堆栈溢出和其他网站的很多现有问题。

这是我的 DatabaseHelper 类

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {

public SQLiteDatabase db;
public static final String DATABASE_NAME = "user.db";

//Module table
public static final String MODULE_TABLE = "modules_table";
public static final String MODULE_COL_1 = "ID";
public static final String MODULE_COL_2 = "CODE";
public static final String MODULE_COL_3 = "TITLE";

public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
Log.d("SQL", "SQLite dbhelper");
db = getWritableDatabase();
}

@Override
public void onCreate(SQLiteDatabase db) {
//db.execSQL("create table " + MODULE_TABLE + "(" + MODULE_COL_1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + MODULE_COL_2 + " TEXT, " + MODULE_COL_3 + " TEXT " +")");
db.execSQL("create table modules_table (ID INTEGER PRIMARY KEY
AUTOINCREMENT, CODE TEXT, TITLE TEXT)");
Log.d("SQL", "SQLite onCreate");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + MODULE_TABLE);
onCreate(db);
}
}

我已经设法让 SQLite dbhelper 出现在 logcat 中,但无法让 SQLite onCreate 出现,并且无法在文件资源管理器或设备本身的任何位置找到数据库,无论是模拟设备还是真实设备。

非常感谢任何帮助,并对代码的格式表示歉意!

最佳答案

我建议在 Activity 中使用以下(暂时):-

DatabaseHelper myDBHelper = new DatabaseHelper(this); //<<<<<<<<< you appear to already have the equivalent of this line (if so use whatever variable name you have given to the DatabaseHelper object)

Cursor csr = myDBHelper.getWritableDatabase().query("sqlite_master",null,null,null,null,null,null);
DatabaseUtils.dumpCursor(csr);
csr.close();

运行然后查看日志。您应该看到 modules_tablesqlite_sequence 的输出(后者是因为您已经编写了自动增量。

sqlite_master 是一个系统表,用于存储系统信息,例如表和索引名称,即模式。

附加 - 访问数据库文件

在未获得 root 权限的设备上,每个应用程序数据(数据/数据)都受到保护,因此您将无法看到数据库文件。

在模拟器上,它取决于模拟器。我相信更高版本的 Android Studio 现在允许访问,例如:-

enter image description here

  • 请注意,以上是 Android 10.1 Pie (API 28),因此数据库具有预写日志记录 (WAL),因此 -shm 和 -wal 文件也存在。

  • 包是 mjt.pvcheck。完整路径是 data/data/mjt.pvcheck/databases。

    • 如您所见,缓存 目录,那么我建议出于某种原因(可能是故障)数据库不存在,但您确实可以访问然而,在通过虚拟设备文件资源管理器检查时,我的包中唯一的子文件夹是缓存
    • 或许,尝试在设备上重新运行(请注意在设备资源管理器中重新选择设备,因为它不会刷新),这可能是您没有看到数据库的另一个原因。

关于java - Android SQLite,onCreate() 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com