2011-03-18 17 views
5

Aşağıdaki kod gibi 3 sütun ile çalışan hakkında bir tablo var:SQLite veritabanını iki koşulla nasıl sorgularım?

 db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + _ID 
       + " INTEGER PRIMARY KEY AUTOINCREMENT, " + DEPT 
       + " TEXT NOT NULL," + NAME + " TEXT NOT NULL," + CITY + " TEXT NOT NULL);"); 

şimdi sadece hem çalışanlar hem de DEPT ve CITY'de göstermek istiyorum (hem HCM City hem de Sales departmanında çalışanlar). Bunu almak için nasıl sorgulayabilirim?

cevap

1
SELECT * FROM Employees WHERE DEPT='Sales' AND City='HCM' 
+0

o SQL çalışır ancak SQLite'ta çalışmaz. Bu komutu sözdizimi ile SQLite'de nasıl kullanabilirim: db.query (tablo, sütunlar, seçim, selectionArgs, groupBy, sahip, orderBy). – DienTrinh

+0

İmleç imleci = db.query'yi kullanmayı denedim (TABLE_NAME, yeni Dize [] {_ID, NAME, DEPT, CITY}, DEPT + "=?" + "VE" + CITY + "=?", Yeni Dize [] {"Satış", "HCM"}, null, null, null); Ancak, emülatör bir hata gösteriyor – DienTrinh

+0

Bu tür bir sorgu, db.query yerine db.rawQuery yöntemiyle çalıştırılmamalıdır. Bence sorun buydu. –

9

@DienTrinh, bunu doğru, AND etrafında boşluk olursa vardı. Bu senin için çalışmalı.

Cursor cursor = db.query(TABLE_NAME, 
          new String [] {_ID, NAME, DEPT, CITY }, 
          DEPT +"=?" +" AND " + CITY +"=?", 
          new String[] {"Sales", "HCM" }, 
          null, null, null); 
2

çözümdür:

SELECT * FROM Employess 
WHERE DEPT='Sales' COLLATE NOCASE AND City='HCM' COLLATE NOCASE 
İlgili konular