2012-09-11 1 views
1

sqlite 데이터베이스 (android)에서 sql 문을 실행하고 쿼리 결과를 얻을 수있는 방법은 무엇입니까? 쿼리가 실행되었는지 여부를 확실히 알아야합니다. sqlite에 삽입 오류 코드 받기

내가 해낸 :

db.execSQL(sql); 

그러나 이것은 무효 기능입니다.

나는 데이터베이스에서 query_string을 얻을 수 있으므로 삽입 또는 업데이트 또는 삭제 문을 모른다. 나는 그것이 선택 진술이 아닐 것이라는 것을 확실히 알고있다. 이 같은

+1

언어가 무엇입니까? – woz

+0

android. 죄송합니다. – Gabrielle

+0

... 그리고 어떤 문서가'execSQL'에 관해 말합니까? – Selvin

답변

5

시도 뭔가 : 당신이 SQLiteDatabase를 사용하는 경우

public String insertQuery(String sql) { 
      try{ 
     db.execSQL(sql); 
      } 
      catch (SQLException ex){ 
       return ex.toString(); 
      } 
      return null; 
    } 
+0

멋진 예제 코드입니다. – Fattie

2

, 당신은 두 가지를 수행 할 수 있습니다

1)이 * 쿼리, ALTER 결과 (UPDATE, DELETE, DROP없이 등 ...) *

이러한 쿼리는 값을 반환하지 않으며 수정합니다. 데이터베이스 이를 수행하는 함수는 execSQL(String)입니다. 문자열 형식의 SQL 쿼리 만 제공하면 실행됩니다.

2) 결과에 * 쿼리 (SELECT) *

이러한 쿼리는 Cursor 객체를 반환합니다. 커서를 사용하면 다른 반복자와 마찬가지로 결과 세트를 반복 할 수 있습니다. 커서는 항상 실제 결과 집합의 단일 행을 '포함'하며 앞으로/뒤로 이동하려면 이동 함수를 호출 할 수 있습니다. 이를 수행하는 기능은 rawQuery(String, String [])입니다. query() 함수를 사용할 수도 있습니다.이 경우 적은 SQL을 입력해야합니다.

예 :

Cursor cursor = database.rawQuery("SELECT * FROM yourtable", null); 

for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) 
{ 
    /*this means you want to get from the current row a String 
    (CHAR, VARCHAR or TEXT) value from the 0th (first) column*/ 
    String str = cursor.getString(0); 

    /*This means, that you want to get from the current row an 
    integer value from the 1st (second) column*/ 
    int i = cursor.getInt(1); 
    ... 
}