Java-Android SQLite,未调用onCreate()

Java-Android SQLite,未调用onCreate(),第1张

概述我一直在努力在Android应用程序中创建SQLite数据库.我看过许多教程,以及关于堆栈溢出和其他站点的许多现有问题.这是我的DatabaseHelper类importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;

我一直在努力在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 tablepublic 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();}@OverrIDepublic 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");}@OverrIDepublic voID onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) {    db.execsql("DROP table IF EXISTS " + MODulE_table);    onCreate(db);}}

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

任何帮助将不胜感激,并为代码的格式表示歉意!

解决方法:

我建议在活动中临时使用以下内容:

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_table和sqlite_sequence的输出(后者是因为您已经编码了autoincrement.

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

附加-访问数据库文件

在未生根的设备上,每个应用程序数据(数据/数据)都受到保护,因此您将无法看到数据库文件.

在仿真器上,它取决于仿真器.我相信更高版本的AndroID Studio现在允许访问,例如:-

>请注意,以上是AndroID 10.1 PIE(API 28),因此数据库具有预写日志记录(WAL),因此-shm和-wal文件也存在.
>软件包为mjt.pvcheck.完整路径是data / data / mjt.pvcheck / databases.

>如您所见,可以看到缓存目录,然后我建议出于某种原因(也许是失败),该数据库不存在,但是按照虚拟设备文件浏览器的检查,您似乎确实具有访问权限我的包裹中包含的文件夹是缓存.
>也许,请尝试在设备上重新运行(请注意在设备浏览器中,由于它不刷新,因此请重新选择该设备),这可能是您看不到数据库的另一个原因.

总结

以上是内存溢出为你收集整理的Java-Android SQLite,未调用onCreate()全部内容,希望文章能够帮你解决Java-Android SQLite,未调用onCreate()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1081828.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存