2012-11-02 1 views
7

Android에서 SQLite의 rawQuery() 또는 execSQL() 메소드를 사용하는 경우 문장을 종료 할 때 세미콜론을 사용해야하는 경우는 언제입니까?Android 및 SQLite : 세미콜론을 사용하여 문장을 종료 할 때?

this tutorial에서 저자는 예를 들어 execSQL을 통해 create table 문에서 세미콜론을 사용하지만 select 문에서는 rawQuery를 사용하여 세미콜론을 사용하지 않습니다. 예를 들어 :

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 문 :

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

가에는 ExecSQL() 메소드를 사용하여 문 끝에 세미콜론을 필요로하는 경우가 있지만 문을 사용하여 테이블 문 만들기

rawQuery() 메소드는 그렇지 않습니까?

답변

12

SQLite 문은 세미콜론 (;)으로 끝납니다. 하나가 지정되면 명령의 끝이고 더 많은 명령이 세미콜론 다음에 올 수 있음을 의미합니다. 세미콜론을 지정하지 않으면 전체 문자열이 명령이됩니다.

CREATE 문에있는 세미콜론은 아무 것도 따르지 않으므로 문제가되지 않습니다.

+1

Gotcha. 그래서 하나의 명령을 전송하는 동안 세미콜론은 전적으로 선택 사항입니까? –

+0

@DanielS Correct. – Eric

+0

나는 그것이 이것이라고 생각한다. 명령 행에서 SQL을 사용하는 경우에는 세미콜론을 넣어야합니다. 많은 SQL API가 없으면 세미콜론이 끝에 나타납니다. –

2

둘 다 세미콜론을 사용한 적이 없습니다. 작동합니다.

+1

작동합니다 시간당 쿼리를 하나만 전달하기 때문입니다. – ST3

관련 문제