Android SQLite SELECT Query

我从EditText取得了String值,并SELECT QUERY after WHERE条件SELECT QUERY after WHERE将它设置在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"))); 

但它不起作用。 有什么build议么?

尝试修剪string以确保没有额外的空白:

 Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE TRIM(name) = '"+name.trim()+"'", null); 

也可以像提到的c.moveToFirst()一样使用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子句与一个?比较,然后你指定一个相等数量的? 在查询的第二个参数(你当前有空)。

和Nambari提到的一样,你应该使用c.moveToFirst()而不是c.moveToNext()

另外,有没有名义上的报价? 这可能会把事情搞砸。

这是下面的代码。

 String areaTyp = "SELECT " +AREA_TYPE + " FROM " + AREA_TYPE_TABLE + " where `" + TYPE + "`=" + id; 

其中id是显示结果的条件。