Android 使用rawquery对单词进行排序
我希望能够使用原始查询按升序对单词进行排序(因为我将使用游标)。然而,当我尝试按字母顺序排列单词时,我的应用程序崩溃了,导致我出现以下错误:Android 使用rawquery对单词进行排序,android,sqlite,sorting,Android,Sqlite,Sorting,我希望能够使用原始查询按升序对单词进行排序(因为我将使用游标)。然而,当我尝试按字母顺序排列单词时,我的应用程序崩溃了,导致我出现以下错误: android.database.sqlite.SQLiteException: near "SELECTWORDFROM": syntax error (code 1): , while compiling: SELECTWORDFROM WORDSORDER BYWORD 下面显示了发生错误的代码 WordsDataSource.java publi
android.database.sqlite.SQLiteException: near "SELECTWORDFROM": syntax error (code 1): , while compiling: SELECTWORDFROM WORDSORDER BYWORD
下面显示了发生错误的代码
WordsDataSource.java
public Cursor sortWords (){
String[] wordname = new String[]{ WordsHelper.COLUMN_WORD };
Cursor cursor = mDatabase.rawQuery
("SELECT"+ TextUtils.join(", ", wordname)+"FROM " +
WordsHelper.TABLE_WORDS +
"ORDER BY"+ TextUtils.join(", ", wordname),null);
//Cursor cursor= mDatabase.query(WordsHelper.TABLE_WORDS,wordname , null, null, null, null, WordsHelper.COLUMN_WORD+" ASC");
return cursor;
}
WordsHelper.java(我的实际数据库)
哪里出错了?您使用的是导致错误的
Arrays.ToString()
方法。
尝试使用TextUtils.join(“,”,wordname)
Arrays.toString()
返回“调试样式”字符串,即“[WORD]”。你需要的不是“[单词]”而是单词
更新
package mapp.com.sg.pocketdictionary.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class WordsHelper extends SQLiteOpenHelper {
public static final String TABLE_WORDS ="WORDS";
public static final String COLUMN_ID = "_ID";
public static final String COLUMN_WORD = "WORD";
public static final String COLUMN_MEANING = "MEANING";
public static final String COLUMN_TYPE = "TYPE";
public static final String COLUMN_FAVOURITE = "FAVOURITE";
private static final String DB_NAME = "words.db";
private static final int DB_VER = 1;
private static final String DB_CREATE = "CREATE TABLE "+TABLE_WORDS+
" (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT" +
", " + COLUMN_WORD + " TEXT, " +
COLUMN_MEANING + " TEXT,"+
COLUMN_TYPE + " TEXT,"+ COLUMN_FAVOURITE +" INTEGER)";
public WordsHelper(Context context){
super(context, DB_NAME, null, DB_VER);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(DB_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
看看当前的错误
android.database.sqlite.SQLiteException: near "SELECTWORDFROM": syntax error (code 1): , while compiling: SELECTWORDFROM WORDSORDER BYWORD
您需要在SELECT和ORDER之后添加空格
试试下面的方法
mDatabase.rawQuery
("SELECT "+ TextUtils.join(", ", wordname)+" FROM " +
WordsHelper.TABLE_WORDS +
" ORDER BY "+ TextUtils.join(", ", wordname),null);
不幸的是,您的代码没有精确显示错误的位置。打印出您的代码生成的原始SQL,我猜您将立即看到问题所在。@john tan请查看我当前的更新