我有一个预制的SQLite数据库,我通过AsyncTask从网上下载。它下载文件并将其存储在/ data / databases /中的sdcard上我检查了数据库文件并且它已成功下载并具有所有相应的表和数据,但每次我尝试打开数据库并显示存储的数据时得到以下
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
这没有意义,因为表格在那里
也许我的databasehelper类错了或我称错了。
这是我的database.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();
有什么建议吗?
由于
答案 0 :(得分:1)
也许我的databasehelper类错了
是
您需要在onCreate()
子类上实现onUpgrade()
和SQLiteOpenHelper
。无论出于何种原因,你决定不这样做。因此,您的SQLiteOpenHelper
将无效。
但是,由于SQLiteOpenHelper
并非旨在支持您的数据库下载方案,因此您只需使Database
不延伸SQLiteOpenHelper
,并自行打开和关闭数据库,你已经在做部分了。