如何使用SQLiteOpenHelper Android在Single应用程序中创建多个数据库

时间:2017-09-09 04:44:37

标签: java android sqlite

我想在SQLite数据库中使用线程存储数据。每个线程都有自己的数据库来存储数据。 我正在使用线程来提高性能并缩短处理时间。如你所知,SQLite不允许多线程数据写入。所以我计划为每个线程创建一个数据库,以节省时间并提高性能。

Thread1将在数据库[0]中插入数据 Thread2将在数据库[1]中插入数据 。 。 。 等等。

如何使用SQLite Helper实现这一目标?

我正在使用此代码

public class DBHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "MyDBName.db";

public DBHelper(Context context) {
    super(context, DATABASE_NAME , null, 3);
}

@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
public void insertdata(int Dbnumber)
{
Database[dbnumber].excquery("Insert into ....");
}

2 个答案:

答案 0 :(得分:1)

如果将常量更改为常规类成员,请执行以下操作:

public class DBHelper extends SQLiteOpenHelper {

    public String databaseName;

    public DBHelper(Context context, String databaseName) {
        super(context, databaseName, null, 3);
        this.databaseName = databaseName;
    }

    // ...
}

然后您可以根据需要实例化这些内容:

DBHelper db1 = new DBHelper(context, "db1.db");
DBHelper db2 = new DBHelper(context, "db2.db");

您可能需要在代码中的其他位置将DATABASE_NAME更改为databaseName,但您明白了。

答案 1 :(得分:0)

创建另一个扩展到SQLiteOpenHelper的类。就如此容易。

为什么你需要不同的线程。当您创建该类的对象时,它将为您创建所有表。

如果要为每个数据库创建单独的线程,请使用Thread。 @Wizad建议在DB中存储多个表时需要另一个DB。 顺便说一句,这是你的选择。