Java 从多个表检索数据-Android Eclipse

Java 从多个表检索数据-Android Eclipse,java,android,eclipse,sqlite,jointable,Java,Android,Eclipse,Sqlite,Jointable,我正在使用UNION从多个表执行搜索界面。在搜索词中过滤的类是SimpleCorsAdapter表单,我的问题是当我单击搜索词以获取其信息时,唯一看到的是一个白色空白页 下面是我检索“获取更多信息”单词的代码。我认为问题出在WHERE条件下。请帮帮我。谢谢 commandId = getIntent().getIntExtra("COMMAND_ID", 0); SQLiteDatabase db = (new DBHelper(this)).getWritableDatabase(); fin

我正在使用UNION从多个表执行搜索界面。在搜索词中过滤的类是SimpleCorsAdapter表单,我的问题是当我单击搜索词以获取其信息时,唯一看到的是一个白色空白页

下面是我检索“获取更多信息”单词的代码。我认为问题出在WHERE条件下。请帮帮我。谢谢

commandId = getIntent().getIntExtra("COMMAND_ID", 0);
SQLiteDatabase db = (new DBHelper(this)).getWritableDatabase();
final String commandIdString = String.valueOf(commandId);
Cursor cursor = db.rawQuery("SELECT _id AS _id, name AS name, desc AS desc, syntax AS syntax, option AS option FROM comm_acc WHERE _id = ? " +
        "UNION SELECT _id AS _id, name AS name, desc AS desc, syntax AS syntax, option AS option FROM comm_filems WHERE _id = ? " +
        "UNION SELECT _id AS _id, name AS name, desc AS desc, syntax AS syntax, option AS option FROM comm_psu WHERE _id = ? " +
        "UNION SELECT _id AS _id, name AS name, desc AS desc, syntax AS syntax, option AS option FROM comm_shells WHERE _id = ? " +
        "UNION SELECT _id AS _id, name AS name, desc AS desc, syntax AS syntax, option AS option FROM comm_sic WHERE _id = ? " +
        "UNION SELECT _id AS _id,name AS name, desc AS desc, syntax AS syntax, option AS option FROM comm_stp WHERE _id = ?", 
        new String[]{commandIdString, commandIdString, commandIdString, commandIdString, commandIdString, commandIdString});


if (cursor.getCount() == 1)
{
        cursor.moveToFirst();

        commandName = (TextView) findViewById (R.id.commandName);
        commandName.setText(cursor.getString(cursor.getColumnIndex("name")));

        commandDesc = (TextView) findViewById (R.id.commandDesc);
        commandDesc.setText(cursor.getString(cursor.getColumnIndex("desc")));

        commandSyntax = (TextView) findViewById (R.id.commandSyntax);
        commandSyntax.setText(cursor.getString(cursor.getColumnIndex("syntax")));

        commandOption = (TextView) findViewById (R.id.commandOption);
        commandOption.setText(cursor.getString(cursor.getColumnIndex("option")));

}

}

对于原始查询中使用的每个参数,必须设置要替换的值,因此

new String[]{""+commandId}
仅适用于列表中的第一个参数。换成

final String commandIdString = String.valueOf(commandId);
new String[]{commandIdString, commandIdString, commandIdString, commandIdString, commandIdString, commandIdString}

您是否对DB使用了结果SQL查询?它不会解决您的问题,但是:“+commandId”很混乱。为什么不改为使用:String.valueOf(commandId)?我已经编辑了代码,请再次查看。还是一样,白色的空白页。还是一样,只有白色的一页。请再次查看,我已经编辑了代码。关于“您是否对DB使用了结果SQL查询?”-部分,以排除SQL语法相关问题?是的,我尝试过在没有WHERE条件的情况下执行它,它工作正常。我的WHERE条件是否有问题?您的工作是找出问题所在-调试代码,找到完整的SQL查询,执行它,检查结果,并检查LogCat是否发生任何异常。