数据库
首页 > 数据库> > Java-Android SQLite,未调用onCreate()

Java-Android SQLite,未调用onCreate()

作者:互联网

我一直在努力在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出现,并且无法在文件资源管理器或设备本身(无论是模拟设备还是真实设备)中的任何位置找到数据库.

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

解决方法:

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

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现在允许访问,例如:-

enter image description here

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

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

标签:sqlite,android-sqlite,java,android
来源: https://codeday.me/bug/20191108/2006649.html