【问题标题】:SQLite data base doesn't appear in the file explorerSQLite 数据库未出现在文件资源管理器中
【发布时间】:2015-08-27 05:41:14
【问题描述】:

我正在使用 Android Studio 制作一个简单的日志应用程序,用户可以在其中添加他们应该保存到 SQLite 数据库中的时间和注释。但是,当我尝试在 Android 设备监视器/文件资源管理器中查找数据库时,它没有出现在名为“data”的文件夹中(你们中的一个人建议应该保存它)。 在关于 SO 的问题中,还指出在执行 getWritableDataBase()getReadableDataBase() 之前数据库不会出现。但是,即使我找不到它,数据文件夹仍然是空的。我试过卸载再安装,还是不行。

TimeListDataBaseHelper.java

public class TimeListDataBaseHelper {
public static final int DATABASE_VERSION=2;
public static final String DATABASE_NAME="TimeTracker.db",TABLE_NAME="time_records",TIMETRACKER_COLUMN_ID="id",TIMETRACKER_COLUMN_TIME="time",TIMETRACKER_COLUMN_NOTE="note";
private TimeTrackerOpenHelper timeTrackerOpenHelper;
public SQLiteDatabase database;
public TimeListDataBaseHelper(Context context)
{
    timeTrackerOpenHelper=new TimeTrackerOpenHelper(context);
    database=timeTrackerOpenHelper.getWritableDatabase();
}
private class TimeTrackerOpenHelper extends SQLiteOpenHelper
{
public TimeTrackerOpenHelper(Context context)
{
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME + "(" + TIMETRACKER_COLUMN_ID + " INTEGER PRIMARY KEY," + TIMETRACKER_COLUMN_TIME + " TEXT," + TIMETRACKER_COLUMN_NOTE + " TEXT)");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    database.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
    onCreate(db);
}}
public void saveTimeRecord (String time,String notes)
{
    ContentValues contentValues=new ContentValues();
    contentValues.put(TIMETRACKER_COLUMN_TIME,time);
    contentValues.put(TIMETRACKER_COLUMN_NOTE,notes);
    database.insert(TABLE_NAME,null,contentValues);
}}

这是我认为与我的问题有关的 MainActivity.java 的一部分,问题是日志表明数据库已创建,因为我在日志之前写了一个 if 语句.d。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    timeListDataBaseHelper=new TimeListDataBaseHelper(this);
    if(timeListDataBaseHelper.database!=null)
    Log.d("tag","Data Base Created");
    ListView listView=(ListView) findViewById(R.id.time_list);
    timeTrackerAdapter=new TimeTrackerAdapter();
    listView.setAdapter(timeTrackerAdapter);
}

【问题讨论】:

  • 这里需要一个空格:database.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME); 否则你的表不会被删除,也不会在onUpgrade() 中重新创建。

标签: java android sqlite android-studio


【解决方案1】:

你可能没有root。无论哪种方式,请查看stetho。它的众多功能之一是轻松查看应用程序数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2012-01-18
    相关资源
    最近更新 更多