Android开发 SQLite数据库

SQLite数据库是一种用于手机app的轻量型数据库;
Android系统封装了一个类: SqliteOpenHelper(它是抽象类)是主要用来使用的SQLite的。
但实际使用SQLite数据有更加方便与便捷的方法: Room三角色,这篇没有介绍,只是介绍SQLite的使用;

创建数据库

Activity_main.java

package com.example.sqlite;

import androidx.appcompat.app.AppCompatActivity;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class MainActivity extends AppCompatActivity {

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

    public void create_base(View view) {
        SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);

        SQLiteDatabase read = helper.getReadableDatabase();

    }
}

Activity_main.xml


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="生成数据库"
        android:onClick="create_base"/>

LinearLayout>

MySQLiteOpenHelper.java

package com.example.sqlite;

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;

public class MySQLiteOpenHelper extends SQLiteOpenHelper {

    private MySQLiteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    private static SQLiteOpenHelper mInstance;
    public static synchronized SQLiteOpenHelper GetmInstance(Context context){
        if (mInstance == null){

            mInstance = new MySQLiteOpenHelper(context,"basedata.db",null,1);
        }
        return mInstance;
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

在上面的基础上添加”增删改查”功能
————主要是在Activity_main.java中增加代码,MySQLiteOpenHelper.java和Activity_main.xml也要修改;
Activity_main.java

package com.example.sqlite;

import androidx.appcompat.app.AppCompatActivity;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class MainActivity extends AppCompatActivity {

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

    public void create_base(View view) {
        SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);

        SQLiteDatabase read = helper.getReadableDatabase();

    }

    public void query(View view) {
        SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);
        SQLiteDatabase db = helper.getReadableDatabase();

        if (db.isOpen()){

            Cursor cursor = db.rawQuery("select * from persons",null);

            while(cursor.moveToNext()){
                int id = cursor.getInt(cursor.getColumnIndex("_id"));
                String name = cursor.getString(cursor.getColumnIndex("name"));
                Log.e("leo", "query:_id "+id + "name:"+name);

                      cursor.close();

                    db.close();
            }

        }
    }

    public void insert(View view) {
        SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);
        SQLiteDatabase db = helper.getWritableDatabase();

        if (db.isOpen()){

            String sql = "insert into persons(name) values('Derry老师')";
            db.execSQL(sql);
        }

        db.close();
    }

    public void update(View view) {
        SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);
        SQLiteDatabase db = helper.getWritableDatabase();
        if (db.isOpen()){

            String sql = "update persons set name = ? where _id =?";
            db.execSQL(sql,new Object[]{"李连杰",5});
        }

        db.close();

    }

    public void delete(View view) {
        SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);
        SQLiteDatabase db = helper.getWritableDatabase();
        if (db.isOpen())
        {

            String sql ="delete from persons where _id = ?";
            db.execSQL(sql,new Object[]{4});
        }
        db.close();
    }
}

MySQLiteOpenHelper.java

package com.example.sqlite;

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;

public class MySQLiteOpenHelper extends SQLiteOpenHelper {

    private MySQLiteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    private static SQLiteOpenHelper mInstance;
    public static synchronized SQLiteOpenHelper GetmInstance(Context context){
        if (mInstance == null){

            mInstance = new MySQLiteOpenHelper(context,"basedata.db",null,1);
        }
        return mInstance;
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {

        String sql = "create table persons(_id integer primary key autoincrement,name text)";
        sqLiteDatabase.execSQL(sql);

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

Activity_main.xml


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="生成数据库"
        android:onClick="create_base"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查询"
        android:onClick="query"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="插入"
        android:onClick="insert"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="修改"
        android:onClick="update"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="删除"
        android:onClick="delete"/>

LinearLayout>

Original: https://blog.csdn.net/GAOK11/article/details/121843612
Author: G.O.Y
Title: Android开发 SQLite数据库

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816047/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球