【问题标题】:SQLite database's been created but not the table (android)SQLite 数据库已创建但未创建表 (android)
【发布时间】: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 刚刚做到了,但没有成功。允许备份是真的,把它变成假的。

标签: android android-sqlite


【解决方案1】:

这段代码一切正常。我没有使用数据库文件提取另外两个文件,也没有将其放入一个文件夹中。当我确实将所有三个文件放入一个文件夹并使用 SQLite 的 db 浏览器打开扩展名为 .db 的文件时,我可以看到这些表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多