Java 如何从多个本地sql数据库表中获取结果?
我正在android studio中创建一个应用程序,我有一些问题存储在一个数据库中,该数据库是在用户第一次打开应用程序时创建的,我创建了另一个数据库,用户可以添加他的问题,我需要从这两个数据库中随机抽取一个问题。每个数据库有3个相同的列1.问题2.热3.性别 这是我已经试过但不起作用的Java 如何从多个本地sql数据库表中获取结果?,java,android,sql,Java,Android,Sql,我正在android studio中创建一个应用程序,我有一些问题存储在一个数据库中,该数据库是在用户第一次打开应用程序时创建的,我创建了另一个数据库,用户可以添加他的问题,我需要从这两个数据库中随机抽取一个问题。每个数据库有3个相同的列1.问题2.热3.性别 这是我已经试过但不起作用的 public Cursor getQuestion(int HeatLevel, int Gender) { SQLiteDatabase db = this.getWritab
public Cursor getQuestion(int HeatLevel, int Gender) {
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT question, heat, gender FROM " + TABLE_NAME +
" WHERE heat = " + HeatLevel + " AND gender = " + Gender +
" UNION ALL" +
" SELECT question, heat, gender FROM " + SECOND_TABLE_NAME +
" WHERE heat = " + HeatLevel + " AND gender = " + Gender +
" ORDER BY RANDOM() LIMIT 1";
Cursor data = db.rawQuery(query, null);
return data;
}
因此,应用程序会根据难度和玩家性别从数据库中选择一个问题。
上面的代码生成一个错误,表示“没有这样的表”,第二个数据库的名称好像找不到它一样
我在另一个活动中使用此
public void getQuestion(int HeatLevel, int Gender) {
Cursor question = QuestionDB.getQuestion(HeatLevel, Gender);
if (question.moveToNext()) {
QuestionTextView.setText(question.getString(0));
}
}
我是sql新手,所以可能查询错误。为什么不使用Room?它很容易使用,非常有帮助。我可以使用它,但我已经在4个活动中有2个数据库用于添加、编辑和删除它们,重新启动这个部分是否值得?它真的那么容易使用吗?你真的创建了2个数据库还是指2个表?如果你创建了2个数据库,那么你就发现了问题。我想我有2个表。我的手机中的应用程序文件夹中有2个文件,表名为1和2。如果我创建了2个不同的数据库,它们不会(表)在一个单独的文件夹中?我需要在onCreate of 1类中创建这两个表吗?是的,就是这样,我刚刚更改了onCreate,以便它在1个数据库中创建表,并且我添加编辑和删除这1类中的数据。谢谢@forpas让我想对了。为什么不使用Room?它很容易使用,非常有帮助。我可以使用它,但我已经在4个活动中有2个数据库用于添加、编辑和删除它们,重新启动这个部分是否值得?它真的那么容易使用吗?你真的创建了2个数据库还是指2个表?如果你创建了2个数据库,那么你就发现了问题。我想我有2个表。我的手机中的应用程序文件夹中有2个文件,表名为1和2。如果我创建了2个不同的数据库,它们不会(表)在一个单独的文件夹中?我需要在onCreate of 1类中创建这两个表吗?是的,就是这样,我刚刚更改了onCreate,所以它在1个数据库中创建了表,并且我添加编辑和删除了1类中的数据。谢谢@forpas让我想到了正确的方法。