Android で SQLite のテーブルからすべてのレコードを削除する

Junaid Khan 2023年10月12日
  1. execSQL() メソッドを使用する
  2. Android で SQLite データベースのテーブルからすべての行またはレコードを削除する
Android で SQLite のテーブルからすべてのレコードを削除する

Android オペレーティング システムでは、さまざまな目的で Android アプリケーションを開発しています。 SQLite データベースを使用して、レコードを Android フォンにローカルに保存します。

SQLite データベースは、データをプレーン テキスト形式でローカルに保存するために使用される、Android オペレーティング システムのオープンソース データベースです。 レコードの作成、読み取り、更新、削除など、SQLite データベースで CRUD 操作を実行できます。

この記事では、データが既に内部に保存されていると仮定して、SQLite データベースからすべてのレコードを削除する方法について説明します。

execSQL() メソッドを使用する

execSQL() メソッドの構文:

db.execSQL(query)

パラメータ:

query このパラメーターは、レコードを削除するために必要な SQL クエリを受け取ります。

このメソッドは何も返しません。 代わりに、指定されたパラメーター内の SQL ステートメントを実行します。 SQL ステートメントが正しくない場合、エラーが返されます。

Android で SQLite データベースのテーブルからすべての行またはレコードを削除する

Android オペレーティング システムでは、SQLite データベースを使用してレコードをプレーン テキストで保存、削除、更新します。 Android では、filename.xml 拡張子を作成することにより、XML (Extensible Markup Language) を使用して UI (ユーザー インターフェイス) を開発します。

UI 機能を実行可能にするために、Java ファイルを作成して XML ファイルに接続します。

次のコードで Android XML ファイルを作成しましょう。

XML ファイル (mainActivity.xml):

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/delete_all_rows"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="Delete All Rows"/>

</androidx.constraintlayout.widget.ConstraintLayout>

mainActivity.xml ファイルの説明:

Android では、Linear Layout、Relative Layout、Constraint Layout などのウィジェットを使用してレイアウトを作成します。この例では、constraintLayout を使用して XML でレイアウトを作成します。

このレイアウトにより、ウィジェットのサイズを変更し、ViewGroup で柔軟に配置できます。 この constraintLayout は、Android API バージョン 9 (Gingerbread) 以降で利用できます。

constraintLayout 内では、android:layout_widthandroid:layout_height の 2つのプロパティを使用して、レイアウトの幅と高さをそれぞれ設定します。 両方のプロパティの値は match_parent に設定されています。これは、メイン (親) レイアウトが画面の使用可能な幅と高さの 100% を占めることを示しています。

後で、削除機能を実行するためのボタンが必要になります。 constraintLayout であるメイン (親) レイアウト内に Button をインポートする必要があります。

Button ウィジェットでは、レイアウトの幅と高さという異なるプロパティを使用します。 幅と高さの値 wrap_content は、Button レイアウトが Button レイアウトに書かれたテキストの長さと同じ幅を取ることを示しています。

Button ウィジェットのデフォルトのテキストは button であるため、プロパティ android:text を使用してテキスト Delete All Rows に置き換えることができます。 constraintLayout 内のウィジェットごとに、プロパティ android:id を使用して一意の ID を設定する必要があります。

この ID は、Java ソース ファイルと通信するときに、さまざまなウィジェットを区別します。

ここで、mainActivity.java という名前の Java ファイルを作成し、ウィジェットを接続して UI (xml ファイル) を機能に接続します。

Java ファイル (mainActivity.java):

package com.example.android;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
  private Button deleteButton;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainActivity);
    addListenerOnButton();
  }

  public void addListenerOnButton() {
    deleteButton = (Button) findViewById(R.id.delete_all_rows);

    deleteButton.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        SQLiteDatabase db = this.getWritableDatabase();
        // change the TABLE_NAME here to your SQLite table
        db.execSQL("delete from " + TABLE_NAME);
        db.close();
        Toast
            .makeText(getApplicationContext(),
                "All records are deleted in SQLite database successfully.", Toast.LENGTH_LONG)
            .show();
      }
    });
  }
}

画面上のボタンを押すと、Toast には次のように表示されます。

All records are deleted in SQLite database successfully.

mainActivity.java ファイルの説明:

パッケージ名 com.example.android は、アプリケーションの一意の ID を示しています。 最初にアプリケーションを作成するときにパッケージ名を選択します。

作成後、各 Java ソース ファイルの先頭にパッケージ名が自動的に表示されます。 次に、それぞれ異なる目的のために、5つの異なるインポートがあります。

ユーザー クラスで組み込みクラスを使用するときは常に、それを使用する前にインポートする必要があります。 extends キーワードは、アクティビティが最初に作成されたときに出力する onCreate() メソッドを持つ AppCompatActivity クラスの継承を示します。

onCreate() メソッド内で、setContentView() メソッドを使用して、Java ソース ファイルをレイアウトに接続します。 同様に、Android では、ウィジェットごとに組み込みのクラスがあります。

Java ソース ファイル内のウィジェットを使用するには、最初にウィジェットをインポートする必要があります。 Button ウィジェットがクリック リスナーをリッスンするには、setOnClickListener() メソッドを実装する必要があります。

このメソッド内では、画面上の Button ウィジェットが押されたときに機能を実行するコード行を記述できます。

ご存知のように、SQLite データベースからすべてのレコードを削除する必要があります。 そのため、クラス名 (スペース) オブジェクト名 SQLiteDatabase db を使用して、SQLite データベースのインスタンスを作成する必要があります。

SQLiteDatabase にはさまざまなメソッドがありますが、データベース内のレコードを削除するには、execSQL() メソッドを使用し、その中に SQL クエリを渡します。 すべてのレコードを削除するには、"delete from "+ "TABLE_NAME" クエリを渡す必要があります。

TABLE_NAME は、SQLite データベース内に保存されているテーブル名の名前です。 さらにクエリを実行する必要がなくなったら、db.close() メソッドを使用してデータベースを閉じる必要があります。

コードとクエリが正しく記述されている場合、アプリケーションは Toast ウィジェットに All records are deleted in SQLite database successfully というメッセージを表示します。 それ以外の場合は、コンソールにエラーが表示されます。

著者: Junaid Khan
Junaid Khan avatar Junaid Khan avatar

Hi, I'm Junaid. I am a freelance software developer and a content writer. For the last 3 years, I have been working and coding with Python. Additionally, I have a huge interest in developing native and hybrid mobile applications.

LinkedIn

関連記事 - SQLite Table