我如何在SQLite数据库中选择两列。我写了这段代码,但我错了code.can有人帮助我,我的错误在哪里?
cursor = db.rawQuery("SELECT * FROM "+ DatabaseHelper.TableUsers+" WHERE "+DatabaseHelper.COL_UserName,DatabaseHelper.COL_Password+,new String[]{UserName, Password});
答案 0 :(得分:2)
我立刻希望打开这样一个事实,即这个答案是基于你正确使用SQL术语的事实,并且你知道select two columns
意味着从一行(或多行)中挑选两列从查询中返回
您使用的WHERE
子句错误。它旨在选择列具有给定值的位置。例如,如果您的表格中包含INTEGER PRIMARY_KEY
,并希望选择id = 10
行,则执行SELECT * FROM table WHERE id=10
。
您应该使用存储过程,以便转换为支持SELECT * FROM table WHERE id=?
并传递带有参数的String []数组以填充。
现在您已了解WHERE
子句的实际基础知识,让我继续您的代码。
您正在使用,
,因此在String之外添加更多参数。其次,你不能有多个传递的参数,唯一支持的是String列表,这是为了避免SQL注入。
现在,选择特定的列更容易。
首先,您需要moveToFirst
以确保查询不为空。然后isAfterLast
用于检查是否没有剩余条目。然后你只需选择你想要的适用值。例如:
if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
//These are just examples of values you can select from the returned row. Edit based on your database and the rows you want. `COLUMN_ID` and `COLUMN_STACKTRACE`
//are Strings with the column name
int id = cursor.getInt(cursor.getColumnIndex(COLUMN_ID));
String stack = cursor.getString(cursor.getColumnIndex(COLUMN_STACKTRACE));
//Here you'd add these to a List or something, maybe as a dataclass. Essentially, TODO: Handle your data here
cursor.moveToNext();//Move to the next row
}
}
cursor.close();//Close the cursor
}
添加WHERE
关键字说明。
如果您有id = 10, field1 = "11.12.17", field3 = "some data here"
行,并且您想根据ID选择该行,则可以使用SELECT * FROM table WHERE id=10
选择ID为10的所有行。在某些情况下,您得到一排,在其他人则得到1000排。
答案 1 :(得分:1)
使用原始查询时,代码应为:
cursor = db.rawQuery("SELECT * FROM "+ DatabaseHelper.TableUsers+" WHERE "+DatabaseHelper.COL_UserName+"='"+UserName+"' And "+DatabaseHelper.COL_Password+"='"+ Password+"'");
即使我更喜欢使用准备好的陈述。