这可能是一个愚蠢的问题,但这段代码无效......
String sql= "SELECT field, question, choice1, choice2, choice3, choice4, answer "
+ "FROM WineQuiz ORDER BY RANDOM() LIMIT 5";
Intent i = getIntent();
String mField1 = i.getStringExtra("FIELD1");
String mField2 = i.getStringExtra("FIELD2");
String mField3 = i.getStringExtra("FIELD3");
if(mField1!="" || mField2!="" || mField3!=""){
sql = "SELECT field, question, choice1, choice2, choice3, choice4, answer "
+ "FROM WineQuiz WHERE field='"+mField1+"' or field='"+mField2+"' or field='"+mField3+"' ORDER BY RANDOM() LIMIT 5";
Cursor c =db.rawQuery(sql, null);
我想做的很简单。我正在创建测验应用程序,其中SelectActivity将测验字段的字符串数据发送到此类,并使用mField1,2,3的变量接收它。
如果SelectActivity不发送任何字符串,则将第一个sql(变量)放入查询中。 如果选择了其中一个字段,mField1或2或3接收字符串数据,则第二个sql将被放入查询中。
然而,第一个sql查询不起作用,而第二个sql查询效果很好。 当我独立使用第一个sql查询时,它运行得很好。因此,第一个和第二个sql似乎无法同时存在,尽管这两个查询本身没有问题。
为什么会这样?
回复评论,“不工作”表示游标没有数据。我的继续代码如下,并显示错误日志“光标没有数据”。它字面意思是那些数组不存储任何数据。
Cursor c =db.rawQuery(sql, null);
if (c.getCount() > 0) { // If cursor has at least one row
c.moveToFirst();
do { // always prefer do while loop while you deal with database
cPos = c.getPosition();
array[cPos][0] = c.getString(c.getColumnIndex("field"));
array[cPos][1] = c.getString(c.getColumnIndex("question"));
array[cPos][2] = c.getString(c.getColumnIndex("choice1"));
array[cPos][3] = c.getString(c.getColumnIndex("choice2"));
array[cPos][4] = c.getString(c.getColumnIndex("choice3"));
array[cPos][5] = c.getString(c.getColumnIndex("choice4"));
array[cPos][6] = c.getString(c.getColumnIndex("answer"));
c.moveToNext();
//Retrieves whether the cursor is after the last row in this SQLServerResultSet object.
} while (!c.isAfterLast());
} else {
Log.e("SQL Query Error", "Cursor has no data");
}