Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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 如何使用SQLiteOpenHelper Android在单个应用程序中创建多个数据库_Java_Android_Sqlite - Fatal编程技术网

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

Java 如何使用SQLiteOpenHelper Android在单个应用程序中创建多个数据库,java,android,sqlite,Java,Android,Sqlite,我想在SQLite数据库中使用线程存储数据。每个线程都有自己的数据库来存储数据。 我使用线程来提高性能和减少处理时间。正如您所知,SQLite不允许多线程数据写入。因此,我计划为每个线程创建一个数据库,以节省时间并提高性能 Thread1将在数据库[0]中插入数据 Thread2将在数据库[1]中插入数据 . . . 等等 如何使用SQLite助手实现这一点 我正在使用这个代码 public class DBHelper extends SQLiteOpenHelper { public st

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

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

如何使用SQLite助手实现这一点

我正在使用这个代码

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 ....");
}

创建另一个扩展到SQLiteOpenHelper的类。就这么简单

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

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

如果将常量更改为常规类成员,如下所示:

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,但您明白了。

我想知道为什么您愿意使用两个数据库而不是多个表?@向导是的,问得好。我使用线程来提高性能和减少处理时间。正如您所知,SQLite不允许多线程数据写入。因此,我计划为每个线程创建一个数据库,以节省时间并提高性能。如果需要多个数据库,只需将数据库名称从常量更改为常规字段,并使用构造函数的参数初始化即可。然后,如果代码的其余部分符合要求,则可以通过为每个数据库构造一个具有所需名称的DbHelper来拥有任意多个数据库。@MattGregory请详细说明您想说什么?我使用线程来提高性能和减少处理时间。正如您所知,SQLite不允许多线程数据写入。所以我计划为每个线程创建一个数据库,以节省时间并提高性能。您可以使用数据库事务一次性将数据插入多个表中,还有其他方法。这完全不同,在一个数据库中从多个线程在多个表上编写问题不会影响处理吗?你太棒了