java - 打开下载的 SQLite 数据库

标签 java android database sqlite

我有一个预制的 SQLite 数据库,我正在通过 AsyncTask 从网上下载该数据库。它下载文件并将其存储在 SD 卡上的/data/databases/我已检查数据库文件,它已成功下载并具有所有适当的表和数据,但每次我尝试打开数据库并显示存储的数据时得到以下内容

    03-19 18:43:10.204: E/AndroidRuntime(3057): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ondrovic.downloader/com.ondrovic.downloader.Main}: android.database.sqlite.SQLiteException: no such table: beers: , while compiling: SELECT * FROM beers ORDER BY _id

这没有意义,因为 table 就在那里

也许我的databasehelper类是错误的或者我调用它是错误的。

这是我的数据库.java

   package com.ondrovic.downloader;

   import java.io.File;

   import android.content.Context;
   import android.database.sqlite.SQLiteDatabase;
   import android.database.sqlite.SQLiteOpenHelper;
   import android.os.Environment;

   public class Database extends SQLiteOpenHelper{
//File rDIR = Environment.getExternalStorageDirectory();
private static String DBPATH = "/data/databases/BOOMBOZZ/";
private static String DBNAME = "boombozz.db";
private static int DBVER = 1;

private SQLiteDatabase db;
private final Context dbContext;

public Database(Context context) {
    super(context, DBNAME, null, DBVER);
    this.dbContext = context;
}

public void open() {
    String myPath = DBPATH + DBNAME;
    db = SQLiteDatabase.openDatabase(Environment.getExternalStorageDirectory() + myPath, null, SQLiteDatabase.OPEN_READWRITE);
}

public synchronized void close() {

    db.close();
    super.close();
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

   }
}

这是我在主类中调用它的地方

 db = (new Database(this)).getWritableDatabase();

有什么建议吗?

谢谢

最佳答案

maybe my databasehelper class is wrong

是的。

您需要在 SQLiteOpenHelper 子类上实现 onCreate()onUpgrade()。无论出于何种原因,您决定不这样做。因此,您的 SQLiteOpenHelper 将无法工作。

但是,由于 SQLiteOpenHelper 并非旨在支持下载数据库场景,因此您应该让 Database 不扩展 SQLiteOpenHelper,并自行打开和关闭数据库,正如您已经部分执行的那样。

关于java - 打开下载的 SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779236/

相关文章:

java - 权限拒绝 : starting Intent { act=android. media.action.IMAGE_CAPTURE cmp=android/com.android.internal.app.ResolverActivity }

java - 将 List<String> 转换为 new Object[]{}

android - 在 Preference.onSaveInstanceState 中保存什么

安卓滑动菜单 : Menu takes entire screen and wont retract

java - 以输入表单 (JSP) 显示数据库中的值

java - Spring - Hibernate 使用 FlushMode 提高事务性能

java - 如何使用 log4j 将错误信息写入单独的文件中

android - Altbeacon 不在 Android 7 上扫描

python - 获取数据库配置不正确。请提供名称值错误

mysql - 数据库请求