0
我正在使用一個數據庫,我通過SD卡從外部獲取數據庫。另外我有一個數據源作爲我編寫的管理數據庫事務的接口。以下是我得到的DB從SD卡:如何在Android中將數據寫入到外部數據庫中
File dbFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyApp/Database/MyDB.db");
SQLiteDatabase database = SQLiteDatabase.openSQLiteDatabase.openOrCreateDatabase(dbFile, null);
dataSource = new DataSource(getApplicationContext(), database);
importData(this); // Insert initial data in all tables in database
而這裏的DataSource類:
public class DataSource {
private SQLiteDatabase db;
public WordsDS(Context context, SQLiteDatabase database) {
db = database;
}
public void open() throws SQLException {}
public void close() { db.close(); }
// Transaction Methods...
}
當我嘗試將數據插入到我的數據庫表中的一個,它崩潰和logcat的輸出:
Error inserting ...
E/Database(19416): android.database.sqlite.SQLiteException: no such table: ...
我不知道如何將我的db類與下面我創建的數據庫聯繫起來。需要幫忙。
public class DB extends SQLiteOpenHelper {
static final String DATABASE_NAME = "MyDB";
static final String TermTable = "Terms";
static final String ID = "id";
static final String Term = "term";
static final String Type = "type";
public static final int DATABASE_VERSION = 1;
private static final String TERM_TABLE_CREATE = "Create table " + TermTable +
"(" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
Term + " VARCHAR(20) ," +
Type + " VARCHAR(10))";
public WordsDB(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(TERM_TABLE_CREATE);
db.execSQL(DEF_TABLE_CREATE);
db.execSQL(HISTORY_TABLE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS " + TermTable);
onCreate(db);
}
}
嘗試http://stackoverflow.com/questions/14373863/how-to-store-sqlite-database-directly-on-sdcard這樣 – Moyeen
請給我們代碼插入這些值的地方。 –
@Moyeen明白了。謝謝你的幫助。 –