sqlite データベース (アンドロイド) で sql ステートメントを実行し、クエリの結果を取得するにはどうすればよいですか? クエリが実行されたかどうかを確認する必要があります。
私が思いついた:
db.execSQL(sql);
しかし、これは void 関数です。
データベースから query_string を取得するので、それが挿入または更新または削除ステートメントであるかどうかはわかりません。それがselectステートメントではないことは確かです。
sqlite データベース (アンドロイド) で sql ステートメントを実行し、クエリの結果を取得するにはどうすればよいですか? クエリが実行されたかどうかを確認する必要があります。
私が思いついた:
db.execSQL(sql);
しかし、これは void 関数です。
データベースから query_string を取得するので、それが挿入または更新または削除ステートメントであるかどうかはわかりません。それがselectステートメントではないことは確かです。
次のようなことを試してください:
public String insertQuery(String sql) {
try{
db.execSQL(sql);
}
catch (SQLException ex){
return ex.toString();
}
return null;
}
を使用している場合はSQLiteDatabase
、次の 2 つのことを実行できます。
1.) *結果のないクエリ ( UPDATE
、DELETE
、DROP
など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);
...
}