String MY_QUERY = "select * from survey_tbl WHERE " +
"status = 'active' AND " +
"mysql_sys_id = ?";
Cursor res = db.rawQuery(MY_QUERY, new String[] {
String.valueOf(id)
});
res.moveToFirst();
// finalmyArray = CreateJsonRecords(res);
while (res.isAfterLast() == false) {
JSONObject k = new JSONObject();
JSONObject l = new JSONObject();
JSONObject m = new JSONObject();
JSONObject n = new JSONObject();
o.put("surveyid", res.getString(res.getColumnIndex("sys_id")));
o.put("surveynum", res.getString(res.getColumnIndex("survey_num")));
o.put("surveytitle", res.getString(res.getColumnIndex("survey_title")));
o.put("surveydescription", res.getString(res.getColumnIndex("survey_description")));
o.put("startdate", res.getString(res.getColumnIndex("start_date")));
o.put("enddate", res.getString(res.getColumnIndex("end_date")));
o.put("status", res.getString(res.getColumnIndex("status")));
res.moveToNext();
}
String MY_QUERY1 = "select *,t1.mysql_sys_id AS questionsysid from " +
"question_tbl AS t1 LEFT JOIN " +
"survey_tbl AS t2 ON t2.mysql_sys_id = t1.survey_id WHERE " +
"t2.status = 'active' AND " +
"t2.mysql_sys_id = ?";
Cursor res1 = db.rawQuery(MY_QUERY1, new String[] {
String.valueOf(id)
});
System.out.println("res1 " + res1);
if (res1 != null && res1.moveToFirst()) {
// res1.moveToFirst();
do {
// while (res1.isAfterLast() == false) {
//question
o.put("mysqlsysid", res.getString(res.getColumnIndex("questionsysid")));
o.put("questiondisplaynum", res.getString(res.getColumnIndex("question_display_order")));
o.put("questionorder", res.getString(res.getColumnIndex("question_order")));
o.put("questioncategory", res.getString(res.getColumnIndex("question_category")));
o.put("question", res.getString(res.getColumnIndex("question")));
o.put("status", res.getString(res.getColumnIndex("status")));
// res1.moveToNext();
} while (res1.moveToNext());
// }
} else {
System.out.println(res1);
}
我使用这个查询在两个表上进行选择,然后将这两个结果添加到一个JSON对象中。这个问题给了我
Android数据库CursorIndexOutOfBoundsException:请求索引1,大小为1
行中的o.put(“mysqlsysid”,res.getString(res.getColumnIndex(“questionsysid”))
问题:
欢迎您提出任何建议
更新
为了确保光标不是空的,我添加了
System.out.println("getCount"res1.getCount());结果是
I/系统。输出:getCount 18
您可以通过以下方式从游标获取数据:游标游标=db。rawQuery(MY\u查询,新字符串[]{String.valueOf(id)});尝试{while(cursor.moveToNext()){//在此处获取数据}}最后{cursor.close;}
嗯,我想你在这里读错了光标。
if (res1 != null && res1.moveToFirst()) {
do {
o.put("mysqlsysid", res.getString(res.getColumnIndex("questionsysid")));
o.put("questiondisplaynum", res.getString(res.getColumnIndex("question_display_order")));
o.put("questionorder", res.getString(res.getColumnIndex("question_order")));
o.put("questioncategory", res.getString(res.getColumnIndex("question_category")));
o.put("question", res.getString(res.getColumnIndex("question")));
o.put("status", res.getString(res.getColumnIndex("status")));
} while (res1.moveToNext());
因为您正在光标上循环,但您正在读取
所以基本上您正在尝试读取前一个光标,但您已经到达了第一个循环的末尾。
您应该关闭光标以防止这种情况发生。
PS:您可以使用while循环来删除if while(res1!=null
我不确定你是否需要检查光标是否存在(需要检查文档)
问题内容: 我正在寻找一个在Django日期之间进行选择的查询。 我知道如何使用原始SQL轻松做到这一点,但是如何使用Django ORM做到这一点呢? 这是我要在查询中添加30天之间的日期的地方: 问题答案: 使用运算符:
我想从每个主机向用户授予select权限,但如果出现错误,则不允许创建用户 mysql 错误1410(42000):不允许使用GRANT创建用户 我不想创建新用户,因为我使用了命令create user 我试图创建一个新用户,但grant命令也失败了。
问题内容: 我有两个表: 我想从表1中选择所有具有值A和B的表2行的行。这将是行1和3(不是2行,因为它只有A,没有4行是因为只有B)。我可以在没有子查询的情况下执行此操作吗? (注意:我还需要查询表1中的值,因此我不能只查询表2。) 问题答案: 塔达阿!没有子查询。
问题内容: 两个或多个值中的最小值或最大值是可能的。我需要这样的东西: 我可以仅使用MySQL来实现吗? 问题答案: 您可以使用和功能来实现它。 两者都在这里描述了http://dev.mysql.com/doc/refman/5.0/en/comparison- operators.html
问题内容: 我有两个用于查询表中行的SQL查询,具体取决于类型2或3。 查询1: 查询2: 现在,我只想获取和使用一个查询的值。如何使用一个查询获得计数。有没有办法做到这一点。我正在使用SQLite数据库。 编辑: 我想要分别为和的值,而不是两者都在一起(不使用)。 问题答案: 尝试使用 对于两个变量:
我有两张桌子 客户(ID,First_Name,Last_Name,地址); 订单(ID,Product_Name,价格,Order_Date日期,Customer_ID,金额); 我必须选择客户的姓氏以及他们的订单数量。 select请求的输出必须是