2012-11-02 15 views
7

Android'de SQLite'ın rawQuery() veya execSQL() yöntemlerini kullanıyorsanız, ifadenizi sonlandırmak için bir noktalı virgül kullanmalısınız? Örneğin, yazar, this tutorial üzerinde this tutorial öğesinde, oluşturma tablosundaki (execSQL aracılığıyla) noktalı virgülü kullanır, ancak select deyiminde (rawQuery aracılığıyla) kullanır. Örneğin:Android and SQLite: İfade sonlandırmak için noktalı virgül ne zaman kullanılır?

private static final String DATABASE_CREATE = "create table " 
     + TABLE_COMMENTS + "(" + COLUMN_ID 
     + " integer primary key autoincrement, " + COLUMN_COMMENT 
     + " text not null);"; 
database.execSQL(DATABASE_CREATE); 

Select deyimi:

Cursor cursor = getReadableDatabase(). 
    rawQuery("select * from todo where _id = ?", new String[] { id }); 

o execSQL() yöntemini kullanarak ifadeleri sonunda noktalı virgül ihtiyaç vaka mı, ama ifadeleri kullanarak Tablo Bildirimi oluşturma

rawQuery() yöntemi yok mu?

cevap

12

SQLite ifadeleri bir noktalı virgülle sonlandırılır (;). Biri belirtilirse, komutun sonu demektir ve daha fazla komut bu noktalı virgülü takip edebilir. Herhangi bir noktalı virgül belirtilmezse, tüm dize komut olarak alınır.

Bu durumda, CREATE ifadesindeki noktalı virgül, hiçbir şey olmadığı için önemli değildir.

+1

Gotcha. Tek bir komut gönderdiğim sürece, noktalı virgül tamamen isteğe bağlı mı? –

+0

@DanielS Doğru. – Eric

+0

Sanırım bu kadar. SQL'i bir komut satırından kullanırsanız, ne olursa olsun noktalı virgül koymalısınız. Çok fazla sayıda SQL API'sı, eğer biri yoksa, noktalı virgülü sonlandırır gibi görünüyor. –

2

Her ikisinde de noktalı virgül kullanmamıştım ve

+1

Çalışıyor çünkü zaman başına yalnızca bir sorgu geçirirsiniz. – ST3

İlgili konular