Java 如何在Android中向外部数据库写入数据
我使用的是一个从SD卡外部获取的数据库。此外,我还有一个数据源作为接口,我编写该接口是为了管理数据库事务。以下是我如何从SD卡获取db的方法:Java 如何在Android中向外部数据库写入数据,java,android,sqlite,Java,Android,Sqlite,我使用的是一个从SD卡外部获取的数据库。此外,我还有一个数据源作为接口,我编写该接口是为了管理数据库事务。以下是我如何从SD卡获取db的方法: File dbFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyApp/Database/MyDB.db"); SQLiteDatabase database = SQLiteDatabase.openSQLiteDatabase.openO
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...
}
public class DataSource {
private DB dbHelper;
private SQLiteDatabase db;
public DataSource(Context context, String path) {
dbHelper = new DB(context, path);
}
public void open() throws SQLException {
db = dbHelper.getWritableDatabase();
}
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);
}
}
我只需在两个方面更改代码: 在DB类中: 在数据源类中:
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...
}
public class DataSource {
private DB dbHelper;
private SQLiteDatabase db;
public DataSource(Context context, String path) {
dbHelper = new DB(context, path);
}
public void open() throws SQLException {
db = dbHelper.getWritableDatabase();
}
public void close() { db.close(); }
// Transaction Methods...
}
谢谢Moyeen。试试这种方法。请给我们插入这些值的代码。@Moyeen知道了。谢谢你的帮助。