
我一直在努力在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()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)