SQLite数据库存储(创建、添加、更新、删除、查询)

什么是SQLite?

SQLite是一款轻量级的关系型数据库

SQLite的内存?

运行速度非常快,通常只需要几百kB的内存就足够了

创建数据库

为了让我们能够更加方便地管理数据库,专门提供了SQLiteOpenHelper 类 通过这个类,我们可以进行数据库的创建和升级

SQLiteOpenHelper是一个抽象类 所以我们要创建一个类 来继承它,
在SQLiteOpenHelper中 ,有两个抽象方法。分别是Oncreate() 和OnUpgrade(),
必须重写这些方法,去实现创建和升级数据库的逻辑。

除此这两个方法,SQLiteOpenHelper 还有两个实例方:

getReadableDatabase()  
getWritableDatabase()

这个两个都可以创建或者打开一个现有的数据库,唯一不同的是 当磁盘满的时候:

getReadableDatabase() 返回的对象是只读的方式。
getWritableDatabase() 出现异常

在创建数据库之前,对数据库的数据类型也要简单了解一下:

integet: 整型
real : 浮点型
blob : 二进制
text: 文本类型
primary key 将id 列设为主键,并用autoincrement关键字表示id列是自增长的。

新建一个类 继承SQLiteOpenHelper 代码如下:

package com.example.myapplication15;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;


public class MySQLiteHelper extends SQLiteOpenHelper {
    private String createSQL = "create table student(" +
            "id integer primary key  autoincrement not null ," +
            "age integer ," +
            "name text not null ," +
            "score real )";
    private Context context;

    public MySQLiteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        this.context = context;

    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
                  sqLiteDatabase.execSQL(createSQL);
                  Toast.makeText(context,"成功",Toast.LENGTH_SHORT).show();


    }

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

    }
}

我们把建表语句定义成了一个字符串常量,然后在onCreate()方法中调用execSQL()方法执行这条建表语句,并弹出一个Tost提示创建成功。

效果图:
这里写图片描述

创建成功后 ,我进行添加内容,然后,进行查询:
代码演示:

package com.example.myapplication15;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private    MySQLiteHelper myHelper;
    private EditText ed;
    private Button charu;
    private Button chaxun;
    private Button qqqq;

    private SQLiteDatabase sqldb;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        binID();
        myHelper = new MySQLiteHelper(this, "student.db", null, 2);
    }

    private void binID() {
        ed = findViewById(R.id.ed);
        qqqq=findViewById(R.id.mina_qqqq);
        charu = findViewById(R.id.button_charu);
        chaxun = findViewById(R.id.button_chaxun);

        charu.setOnClickListener(this);
        chaxun.setOnClickListener(this);
        qqqq.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.mina_qqqq:
                myHelper.getWritableDatabase();
                break;
            case R.id.button_charu:

                //获得SQLiteDatabase对象,读写模式
                sqldb = myHelper.getWritableDatabase();
                //ContentValues类似HashMap,区别是ContentValues只能存简单数据类型,不能存对象
                ContentValues values = new ContentValues();
                values.put("name", ed.getText().toString());
                sqldb.insert("student", null, values);
                break;

            case R.id.button_chaxun:
                SQLiteDatabase  sqldb = myHelper.getReadableDatabase();
                //创建游标
                Cursor mcursor = sqldb.query("student",null,null,null, null, null, null);
                //游标置顶
                if (mcursor.moveToFirst()) {
                    //遍历
                    do {
                        String name = mcursor.getString(mcursor.getColumnIndex("name"));
                        Log.e("MainActivity", "onClick: " + name);
                    } while (mcursor.moveToNext());
                }
                mcursor.close();
                break;

    }}


}



xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context="com.example.myapplication15.MainActivity">
<Button
    android:text="创建"
    android:id="@+id/mina_qqqq"
    android:layout_width="match_parent"
    android:layout_height="50dp" />

    <EditText
        android:id="@+id/ed"
        android:layout_width="match_parent"
        android:layout_height="50dp" />
    <Button
        android:layout_marginTop="25dp"
        android:text="插入"
        android:id="@+id/button_charu"
        android:layout_width="match_parent"
        android:layout_height="50dp" />
    <Button
        android:id="@+id/button_chaxun"
        android:layout_marginTop="25dp"
        android:text="查询"
        android:layout_width="match_parent"
        android:layout_height="50dp" />

</LinearLayout>

`效果图“

这里写图片描述
这里写图片描述

可以看到当我们输入“44444” 点击插入后,点击查询。会发现 控制台打印了结果。

除添加和查询之外。,我们还可以进行数据库的 修改和删除:

 case  R.id.button_xiugai:
                String name=ed.getText().toString();
                String newname=ed_xiugai.getText().toString();
                SQLiteDatabase sqLiteDatabase4=myHelper.getWritableDatabase();
                ContentValues values1=new ContentValues();
                values1.put("name",newname);
                sqLiteDatabase4.update("student",values1,"name=? and id>?",new String[]{name,"5"});
                break;


            case  R.id.button_shanchu:
                SQLiteDatabase sqLiteDatabase3=myHelper.getReadableDatabase();
                String name1=ed.getText().toString();
                sqLiteDatabase3.delete("student","name=?",new String[]{name1});
                break;

一开始我添加两个123 后 进行修改
这里写图片描述

修改的结果为这里写图片描述
我们如果想要删除:
这里写图片描述
点击删除 后查询,发现只有12 而123则消失了:‘
这里写图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页