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议么?

  • 在单个execSQL查询中可以指定的SQLvariables的限制是多less?
  • 如何在android的Realm中实现以下function
  • 在sqlite中的Android真正的转义string
  • Android的 - SQLite数据库存储在哪里
  • SQLite中使用的数据types
  • 使用SimpleCursorAdapter从Cursor更改值
  • SQLiteOpenHelper与ContentProvider
  • 在java中解密错误
  • 尝试修剪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是显示结果的条件。