Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android中向外部数据库写入数据_Java_Android_Sqlite - Fatal编程技术网

Java 如何在Android中向外部数据库写入数据

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

我使用的是一个从SD卡外部获取的数据库。此外,我还有一个数据源作为接口,我编写该接口是为了管理数据库事务。以下是我如何从SD卡获取db的方法:

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知道了。谢谢你的帮助。