2

sqlite データベース (アンドロイド) で sql ステートメントを実行し、クエリの結果を取得するにはどうすればよいですか? クエリが実行されたかどうかを確認する必要があります。

私が思いついた:

db.execSQL(sql);

しかし、これは void 関数です。

データベースから query_string を取得するので、それが挿入または更新または削除ステートメントであるかどうかはわかりません。それがselectステートメントではないことは確かです。

4

2 に答える 2

6

次のようなことを試してください:

public String insertQuery(String sql) {
           try{
       db.execSQL(sql);
           }
           catch (SQLException ex){
               return ex.toString();
           }
           return null;
   }
于 2012-09-11T17:54:50.960 に答える
2

を使用している場合はSQLiteDatabase、次の 2 つのことを実行できます。

1.) *結果のないクエリ ( UPDATEDELETEDROPなどALTER...) *

これらのクエリは値を返さず、データベースを変更します。これを行う関数は と呼ばれexecSQL(String)ます。文字列形式の SQL クエリを指定するだけで、それが実行されます。

2.) *結果を伴うクエリ ( SELECT) *

これらのクエリはCursorオブジェクトを返します。カーソルを使用すると、他の反復子と同様に、結果セットを反復処理できます。カーソルは常に実際の結果セットから 1 つの行を「含む」ため、移動関数を呼び出して前進/後退することができます。これを行う関数は と呼ばれ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);
    ...
}
于 2012-09-11T18:44:44.973 に答える