Java 如何在SQLite数据库中搜索或排序?
我有一个应用程序,它根据来自5个文本字段的信息将信息存储在数据库中。我无法对字段进行排序,甚至无法从一个字段进行排序。另外,ORDERBY子句采用什么方法?数据库的代码片段如下所示:Java 如何在SQLite数据库中搜索或排序?,java,android,sqlite,android-sqlite,database-programming,Java,Android,Sqlite,Android Sqlite,Database Programming,我有一个应用程序,它根据来自5个文本字段的信息将信息存储在数据库中。我无法对字段进行排序,甚至无法从一个字段进行排序。另外,ORDERBY子句采用什么方法?数据库的代码片段如下所示: public static final String MYDATABASE_NAME = "MY_DATABASE"; public static final String MYDATABASE_TABLE = "MY_TABLE"; public static final int MYDATABASE_VE
public static final String MYDATABASE_NAME = "MY_DATABASE";
public static final String MYDATABASE_TABLE = "MY_TABLE";
public static final int MYDATABASE_VERSION = 1;
public static final String KEY_CONTENT = "Content";
public static final String lastName = "lastName";
public static final String firstName = "firstName";
public static final String school = "school";
public static final String email = "email";
public static final String intrest = "intrest";
Cursor d = sqLiteDatabase.rawQuery("SELECT * from " + MYDATABASE_TABLE + "ORDER BY " + lastName + " ASC" , null);
while (d.moveToNext()) {
int sort = d.getColumnIndex(lastName);
int sort2 = d.getColumnIndex(intrest);
String lastName = d.getString(sort);
String intrest = d.getString(sort2);
System.out.println("GOT STUDENT " + lastName + " LIKES " + intrest);
}
尝试在代码中使用(cursor.getCount()>0)方法和(cursor!=null)条件来检查是否获取数据。我已经在下面展示了。并尝试使用Log进行完美的查询,并将该查询放入sqlite数据库中,以检查它是否正常工作
Cursor d = sqLiteDatabase.rawQuery("SELECT * from " + MYDATABASE_TABLE + " ORDER BY " + lastName + " ASC" , null); // here I have edited space before ORDER BY word starts. Please note this
Log.d("query",">>>>"+SELECT * from " + MYDATABASE_TABLE + " ORDER BY " + lastName + " ASC"); // check this query is going to right way or not using local database.
if(d != null){
if(d.getCount() > 0){ // to check you get one or more data
d.moveToFirst();
do{
int sort = d.getColumnIndex(lastName);
int sort2 = d.getColumnIndex(intrest);
String lastName = d.getString(sort);
String intrest = d.getString(sort2);
System.out.println("GOT STUDENT " + lastName + " LIKES " + intrest);
} while (d.moveToNext());
}
}
试试这个。希望它能帮助您。我更喜欢查询方法,因为它更清晰:
public static final String MYDATABASE_NAME = "MY_DATABASE";
public static final String MYDATABASE_TABLE = "MY_TABLE";
public static final int MYDATABASE_VERSION = 1;
public static final String KEY_CONTENT = "Content";
public static final String lastName = "lastName";
public static final String firstName = "firstName";
public static final String school = "school";
public static final String email = "email";
public static final String interest = "interest";
public final String[] columns = new String[] {
lastName,
firstName,
school,
email,
interest
};
public void printInOrder(String column) {
Cursor d = sqLiteDatabase.query(MYDATABASE_TABLE, columns, null, null, null, null, column + " ASC");
while (d.moveToNext()) {
int sort = d.getColumnIndex(lastName);
int sort2 = d.getColumnIndex(interest);
String lastName = d.getString(sort);
String interest = d.getString(sort2);
System.out.println("GOT STUDENT " + lastName + " LIKES " + interest);
}
}
请检查我下面的答案。我在你的代码中编辑了一些代码。请检查它。您上面提到的测试“(d.getCount()>0)”是否与使用“(d!=null)”进行检查相同?我有兴趣了解如何使用这两个测试比一个或另一个更好。请告知。