Android中的SQLite和关键字WHERE都有问题。
目前我正在使用T9字典编写Android App。我的表看起来像这样:
@Override
public void onCreate( SQLiteDatabase db ){
db.execSQL( "CREATE TABLE IF NOT EXISTS " + TABLE_WORDS + " (" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_CODE + " TEXT NOT NULL, " +
COLUMN_WORD + " TEXT NOT NULL, " +
COLUMN_FREQUENCY + " INTEGER NOT NULL, " +
"UNIQUE( " + COLUMN_WORD + "));"
);
}
然后我加载一些数据。例如,对于单词(COLUMN_WORD)" test" T9字典中的代码(COLUMN_CODE)是8378,而#34;示例"我的代码等于3926753。
接下来我编写新的SQL查询:
sql = "SELECT `" + COLUMN_WORD+"`,`"+ COLUMN_CODE + "` FROM `" + TABLE_WORDS + "` LIMIT 10;";
接下来是另一个问题:
code = "2";
sql = "SELECT " + COLUMN_WORD+","+ COLUMN_CODE + " FROM " + TABLE_WORDS + " WHERE " + COLUMN_CODE + "='" + code + "';";
在JAVA中,我写道:Cursor cursor = database.rawQuery( sql, null );
现在在第一个查询结果是正确的,但在第二个我没有得到预期的结果。
日志在这里:http://oi57.tinypic.com/f78di.jpg
我在SQL查询中做错了什么?我尝试使用:
code
=' 2' code
=" 2" code
= 2 code
=' 2' code
=" 2" code
= 2 code
喜欢" 2" code
=?然后cursor = database.rawQuery( sql, new String[] { code } );
我尝试过的所有方法都给了我同样的负面结果。如果您知道如何解决这个问题,请帮助我。
祝你好运 Kamil4u
完整代码:
public List<String> getWords( String code ){
String word;
List<String> list = new ArrayList<String>();
String sql;
sql = "SELECT `" + COLUMN_WORD+"`,`"+ COLUMN_CODE + "` FROM `" + TABLE_WORDS + " WHERE " + COLUMN_CODE + "='" + code + "';";
Cursor cursor = database.rawQuery( sql, null );
Log.i("---TEXT---", sql );
if( cursor != null ){
cursor.moveToFirst();
while( cursor.moveToNext() ){
word = cursor.getString( cursor.getColumnIndex( COLUMN_WORD ) );
list.add( word );
Log.i("---TEXT---", "-->"+cursor.getString( cursor.getColumnIndex( COLUMN_WORD ) )+"<---->" + cursor.getString( cursor.getColumnIndex( COLUMN_CODE ) ) + "<--" );
}
}
Log.i("---TEXT---", "list( " + !list.isEmpty() + " )" + list );
list.clear();
sql = "SELECT `" + COLUMN_WORD+"`,`"+ COLUMN_CODE + "` FROM `" + TABLE_WORDS + "` LIMIT 10;";
Log.i("---TEXT---", sql );
cursor = database.rawQuery( sql, null );
if( cursor != null ){
cursor.moveToFirst();
while( cursor.moveToNext() ){
word = cursor.getString( cursor.getColumnIndex( COLUMN_WORD ) );
list.add( word );
Log.i("---TEXT---", "-->"+cursor.getString( cursor.getColumnIndex( COLUMN_WORD ) )+"<---->" + cursor.getString( cursor.getColumnIndex( COLUMN_CODE ) ) + "<--" );
}
}
Log.i("---TEXT---", "list( " + !list.isEmpty() + " )" + list );
return list;
}
答案 0 :(得分:0)
用这些
替换您的查询sql = "SELECT " + COLUMN_WORD + ", " + COLUMN_CODE + " FROM " + TABLE_WORDS + " WHERE " + COLUMN_CODE + "='" + code + "';";
和
sql = "SELECT " + COLUMN_WORD + ", "+ COLUMN_CODE + " FROM " + TABLE_WORDS + " LIMIT 10;";
<强> 修改 强> 你的while循环正在弄乱它。像这样使用它。
while(!cursor.isAfterLast()){
word = cursor.getString( cursor.getColumnIndex( COLUMN_WORD ) );
list.add( word );
Log.i("---TEXT---", "-->"+cursor.getString( cursor.getColumnIndex( COLUMN_WORD ) )+"<---->" + cursor.getString( cursor.getColumnIndex( COLUMN_CODE ) ) + "<--" );
cursor.moveToNext();
}