【问题标题】:SQLiteDatabase - How to use where clause?SQLiteDatabase - 如何使用 where 子句?
【发布时间】:2012-03-15 17:17:12
【问题描述】:
public Cursor fetchTimetable() {
    return mDb.query(DATABASE_TABLE_TIMETABLE, new String[] {TIMETABLE_ROWID,    TIMETABLE_MODULECODE, TIMETABLE_MODULENAME, TIMETABLE_ROOM, TIMETABLE_LECTURER, TIMETABLE_TIME}, null, null, null, null, null);
}

例如,如果我想要 TIMETABLE_MODULECODE = 123。我将如何做到这一点,我已经阅读了它的第一个空值。我已经在下面尝试过,但仍然无法正常工作

public Cursor fetchTimetable() {
    String a = "TIMETABLE_CODE = ADD";
    return mDb.query(DATABASE_TABLE_TIMETABLE, new String[] {TIMETABLE_ROWID, TIMETABLE_MODULECODE, TIMETABLE_MODULENAME, TIMETABLE_ROOM, TIMETABLE_LECTURER, TIMETABLE_TIME}, a, null, null, null, null);
}

【问题讨论】:

    标签: android mysql sqlite


    【解决方案1】:

    我的 where args 工作示例(使用它更清楚):

            String [] settingsProjection = {
                    DBContract.Settings._ID,
                    DBContract.Settings.COLUMN_NAME_USER_ID,
                    DBContract.Settings.COLUMN_NAME_AUTO_LOGIN
            };
    
            String whereClause = DBContract.Settings.COLUMN_NAME_USER_ID+"=?";
            String [] whereArgs = {userId.toString()};
    
            Cursor c = db.query(
                    DBContract.Settings.TABLE_NAME,
                    settingsProjection,
                    whereClause,
                    whereArgs,
                    null,
                    null,
                    null
            );
    

    【讨论】:

      【解决方案2】:
      db.query
              (
                      TABLE_NAME,
                      new String[] { TABLE_ROW_ID, TABLE_ROW_ONE, TABLE_ROW_TWO },
                      TABLE_ROW_ID + "=" + rowID,
                      null, null, null, null, null
              );
      

      TABLE_ROW_ID + "=" + rowID,这里"="是where子句

      【讨论】:

      • 这可行,但是我在使用字母时收到错误消息。但如果我使用数字,它会起作用
      • 如果您想使用字符串,您可以将查询触发为 Cursor mCursor = mDb.query(true, CUSTOMER_TABLE_NAME, new String[] {GENERIC_ID_KEY,ADDRESS_KEY, PHONE_KEY, MAIL_KEY,CUSTOMER_NAME_KEY}, GENERIC_ID_KEY + "=?", new String []{ customerDbId}, null, null, null, null);
      【解决方案3】:

      “仍然不起作用”到底是什么意思?

      以下代码应该可以正常工作:

      public Cursor fetchTimetable() { 
          String[] columnNames = new String[] {TIMETABLE_ROWID, TIMETABLE_MODULECODE, TIMETABLE_MODULENAME, TIMETABLE_ROOM, TIMETABLE_LECTURER, TIMETABLE_TIME};
          String whereClause = "TIMETABLE_MODULECODE=123"; 
      
          return mDb.query(DATABASE_TABLE_TIMETABLE, columnNames, whereClause, null, null, null, null); 
      } 
      

      【讨论】:

        【解决方案4】:

        正确的语法是

        String[] projection= {column names};
        String[] where={"values for where clause"}; //this must be array     
        public Cursor fetchTimetable() { 
        
            return mDb.query(TABLE_NAME, projrction, "columname"+"=?", where, null, null, null); 
        } 
        

        【讨论】:

        • 谢谢拉利特,你的代码对我有用。我不知道你为什么不投票。也请附上一些链接
        【解决方案5】:

        简单的方法:

        return mDb.rawQuery("SELECT * FROM myTable WHERE column1 = "+ someValue, null);
        

        【讨论】:

          【解决方案6】:

          您可以使用使用此查询:

          SQLiteDatabase db = this.getReadableDatabase();
          
          //Cursor cursorr = db.rawQuery(Query, null);
          
          Cursor cursorr =  db.rawQuery("select * from " + DATABASE_TABLE_EHS + " where " + TASK_ID + "='" + taskid + "'" , null);
          
              if (cursorr.moveToFirst()) 
             {
          
                  do {
          
                      // your code like get columns
          
                      }
                   while (cursorr.moveToNext());
              }
          }
          

          【讨论】:

            【解决方案7】:

            如果您要检查字符串值,您需要将字符串用引号括起来,如下所示:

            dbHelper.COL_EMAIL +"='"+givenEmail+"'", 
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-02-27
              • 1970-01-01
              • 1970-01-01
              • 2014-10-29
              • 1970-01-01
              • 1970-01-01
              • 2021-06-20
              相关资源
              最近更新 更多