Android SQLite: データベース内のデータを更新する
Android SQLite: Update ステートメント
基本構文
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
table_name
: 更新対象のテーブル名column1
,column2
: 更新する列名value1
,value2
: 更新後の値WHERE
: 更新対象のレコードを絞り込む条件
例:
UPDATE users
SET name = 'John Doe', age = 30
WHERE id = 1;
この例では、users
テーブルの id
が 1 であるレコードの name
を 'John Doe'、age
を 30 に更新します。
WHERE
条件は、更新対象のレコードを絞り込むために使用します。条件式には、以下の演算子が使用できます。
=
: 等号<
: 小なり<=
: 小さしいコールLIKE
: ワイルドカード検索IN
: 複数値比較
UPDATE users
SET name = 'John Doe'
WHERE age > 20 AND city = 'Tokyo';
この例では、users
テーブルの age
が 20 より大きく、city
が 'Tokyo' であるレコードの name
を 'John Doe' に更新します。
UPDATE
ステートメントは、更新対象のレコードが存在しない場合は、何も実行しません。- 複数の列を同時に更新するには、
SET
句にカンマ区切りで列名を記述します。 WHERE
条件を省略すると、テーブル内のすべてのレコードが更新されます。
public class MainActivity extends AppCompatActivity {
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// データベースヘルパーを作成
MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this);
// データベースを取得
db = helper.getWritableDatabase();
// UPDATE ステートメントを実行
db.execSQL("UPDATE users SET name = 'John Doe', age = 30 WHERE id = 1");
// データベースを閉じる
db.close();
}
}
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
public MySQLiteOpenHelper(Context context) {
super(context, "database.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// テーブルを作成
db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// データベースのアップグレード処理
}
}
ポイント
- データベースヘルパー (
MySQLiteOpenHelper
) を使用して、データベースへの接続と切断を行います。 UPDATE
ステートメントを実行するには、execSQL()
メソッドを使用します。
- 上記のコードは基本的な例です。実際の開発では、エラー処理などを追加する必要があります。
Android SQLite: Update ステートメントの他の方法
ContentValues を使用する方法
ContentValues values = new ContentValues();
values.put("name", "John Doe");
values.put("age", 30);
db.update("users", values, "id = 1", null);
この例では、ContentValues
オブジェクトを使用して、name
と age
の値を格納しています。
SQLiteQueryBuilder
クラスを使用して、複雑な条件に基づいて更新するレコードを指定することができます。
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
queryBuilder.setTables("users");
String[] selectionArgs = new String[] { "1" };
db.update(queryBuilder.getTableName(), values, "id = ?", selectionArgs);
この例では、SQLiteQueryBuilder
オブジェクトを使用して、id
が 1 であるレコードを更新しています。
RawQuery を使用する方法
直接 SQL クエリを実行して、レコードを更新することができます。
db.execSQL("UPDATE users SET name = 'John Doe', age = 30 WHERE id = 1");
この例は、上記のサンプルコードと同じです。
- シンプルな更新の場合は、
ContentValues
を使用するのが最も簡単です。 - 複雑な条件に基づいて更新する必要がある場合は、
SQLiteQueryBuilder
を使用します。 - 他の方法では実現できない高度な更新を行う場合は、
RawQuery
を使用します。
android sql sqlite