String
からEditText
値を取得し、SELECT QUERY after WHERE
条件内に設定しました
として
TextView tv = (TextView) findViewById(R.id.textView3);
EditTextet2 et = (EditText) findViewById(R.id.editText1);
String name = et.getText().toString();
Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE name = '"+name+"'", null);
c.moveToNext();
tv.setText(c.getString(c.getColumnIndex("email")));
しかし、それは機能しません。助言がありますか?
文字列をトリミングして、余分な空白がないことを確認してください。
_Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE TRIM(name) = '"+name.trim()+"'", null);
_
前述の@thinksteepのようなc.moveToFirst()
も使用します。
これは、selectステートメントの完全なコードです。
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery("SELECT column1,column2,column3 FROM table ", null);
if (c.moveToFirst()){
do {
// Passing values
String column1 = c.getString(0);
String column2 = c.getString(1);
String column3 = c.getString(2);
// Do something Here with values
} while(c.moveToNext());
}
c.close();
db.close();
次のステートメントを使用してみてください。
Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE name = ?", new String[] {name});
Androidでは、WHERE句と?を比較する必要があり、その後、等しい数の?を指定します。クエリの2番目のパラメーター(現在nullがある場所)。
そして、なんばりが述べたように、c.moveToFirst()
ではなくc.moveToNext()
を使用すべきです。
また、名前に引用符がありますか?それも物事を台無しにする可能性があります。
以下にコードを示します。
String areaTyp = "SELECT " +AREA_TYPE + " FROM "
+ AREA_TYPE_TABLE + " where `" + TYPE + "`="
+ id;
idは、結果が表示される条件です。
public User searchUser(String name) {
User u = new User();
SQLiteDatabase db = this.getWritableDatabase(); //get the database that was created in this instance
Cursor c = db.rawQuery("select * from " + TABLE_NAME_User+" where username =?", new String[]{name});
if (c.moveToLast()) {
u.setUsername(c.getString(1));
u.setEmail(c.getString(1));
u.setImgUrl(c.getString(2));
u.setScoreEng(c.getString(3));
u.setScoreFr(c.getString(4));
u.setScoreSpan(c.getString(5));
u.setScoreGer(c.getString(6));
u.setLevelFr(c.getString(7));
u.setLevelEng(c.getString(8));
u.setLevelSpan(c.getString(9));
u.setLevelGer(c.getString(10));
return u;
}else {
Log.e("error not found", "user can't be found or database empty");
return u;
}
}
これは1人のユーザーと1人だけを選択するための私のコードですので、あなたはクラスの空のオブジェクトを開始し、書き込み可能なデータベースを呼び出します。 :1-
if (c.moveToLast()) { } //it return the last element in that cursor
または使用:2-
if(c.moveToFirst()) { } //return the first object in the cursor
データベースが空の場合は忘れないでください。私の場合は空のオブジェクトを返すだけです。
幸運