【发布时间】:2020-04-03 21:01:58
【问题描述】:
已经有人问过很多关于这个的问题,但似乎没有一个对我有用。 我打开文件资源管理器>数据>数据>包名称>数据库> mydatabase.db以获取我的数据库并将其保存在我的PC上尝试使用用于sqlite的db浏览器查看它。但是没有桌子。 这是扩展 sqliteOpenHelper 的辅助类:
package famiddle.smart.apps.businessmanager;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class BusinessDbHelper extends SQLiteOpenHelper {
// If you change the database schema, you must increment the database version.
public static final String DATABASE_NAME = "BusinessManager.db";
public static final int DATABASE_VERSION = 1;
// SQL query for creating the table for items name
private static final String SQL_CREATE_ITEMS_NAME_TABLE =
"CREATE TABLE itmes_name(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, items_name TEXT NOT NULL);" ;
public BusinessDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(SQL_CREATE_ITEMS_NAME_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
在我的一个应用程序的活动中,我实例化了上面的类并运行了一个 getReadableDatabase() 方法,以便可以使用表创建数据库。
package famiddle.smart.apps.businessmanager;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import androidx.appcompat.app.AppCompatActivity;
public class PurchaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_purchase);
// Instantiate the subclass of SQLiteOpenHelper.
BusinessDbHelper dbHelper = new BusinessDbHelper(this);
SQLiteDatabase db = dbHelper.getReadableDatabase();
}
我该怎么办?
【问题讨论】:
-
close()数据库,然后将其拉取以将临时文件(wal,shm)持久化到 db 文件中。如果这没有帮助,请卸载您的应用一次以重新触发onCreate()。 -
@laalto 我没有在活动的 onDesrroy 方法中关闭它,但我一次又一次地卸载我的应用程序并重新安装它。
-
我用来查看数据库的软件有问题吗?就像我在 d question 中提到的那样,我正在使用 db for SQLite 软件。
-
检查您的清单中是否有此行:
android:allowBackup="true"。如果存在,请将其更改为false,卸载应用并重新运行。 -
@forpas 刚刚做到了,但没有成功。允许备份是真的,把它变成假的。