Android를 사용하는 SQLite의 테이블에서 모든 레코드 삭제

Junaid Khan 2023년10월12일
  1. execSQL() 메소드 사용
  2. Android를 사용하여 SQLite 데이터베이스의 테이블에서 모든 행 또는 레코드 삭제
Android를 사용하는 SQLite의 테이블에서 모든 레코드 삭제

Android 운영 체제에서 다양한 목적으로 Android 애플리케이션을 개발합니다. 우리는 SQLite 데이터베이스를 사용하여 안드로이드 폰에 로컬로 레코드를 저장합니다.

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의 두 속성은 각각 레이아웃의 너비와 높이를 설정하는 데 사용됩니다. 두 속성의 값은 match_parent로 설정되어 기본(상위) 레이아웃이 화면의 사용 가능한 너비와 높이의 100%를 차지함을 보여줍니다.

나중에 삭제 기능을 수행하려면 버튼이 필요합니다. constraintLayout인 기본(상위) 레이아웃 내에서 Button을 가져와야 합니다.

버튼 위젯의 경우 레이아웃의 너비와 높이와 같은 다른 속성을 사용합니다. 너비 및 높이에 대한 wrap_content 값은 버튼 레이아웃이 버튼 레이아웃에 작성된 텍스트 길이와 동일한 너비를 사용함을 보여줍니다.

Button 위젯의 기본 텍스트는 button이므로 android:text 속성을 사용하여 Delete All Rows 텍스트로 바꿀 수 있습니다. constraintLayout 내부의 각 위젯에 대해 android:id 속성을 사용하여 고유 ID를 설정해야 합니다.

이 ID는 Java 소스 파일과 통신할 때 서로 다른 위젯을 구별합니다.

이제 mainActivity.java라는 Java 파일을 생성하여 위젯을 연결하여 UI(xml 파일)를 기능에 연결합니다.

자바 파일(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();
      }
    });
  }
}

화면의 버튼을 누르면 토스트가 다음과 같이 표시됩니다.

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() 메서드를 구현해야 합니다.

이 메서드 내에서 화면의 버튼 위젯을 누르면 기능을 수행하는 코드 줄을 작성할 수 있습니다.

아시다시피 SQLite 데이터베이스에서 모든 레코드를 삭제해야 합니다. 따라서 클래스 이름(공백) 개체 이름 SQLiteDatabase db를 사용하여 SQLite 데이터베이스의 인스턴스를 생성해야 합니다.

SQLiteDatabase에는 다른 메서드가 있지만 데이터베이스의 레코드를 삭제하려면 execSQL() 메서드를 사용하고 그 안에 SQL 쿼리를 전달합니다. 모든 레코드를 삭제하려면 "delete from "+ "TABLE_NAME" 쿼리를 전달해야 합니다.

TABLE_NAME은 SQLite 데이터베이스에 저장된 테이블 이름의 이름입니다. 추가 쿼리가 필요하지 않으면 db.close() 메서드를 사용하여 데이터베이스를 닫아야 합니다.

코드와 쿼리가 올바르게 작성된 경우 애플리케이션은 모든 레코드가 SQLite 데이터베이스에서 성공적으로 삭제되었습니다라는 메시지와 함께 토스트 위젯을 표시합니다. 그렇지 않으면 콘솔에 오류가 표시됩니다.

작가: 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