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则消失了:‘
这里写图片描述

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是创建SQLite数据库的步骤: 1. 打开Android Studio,创建一个新的Empty Activity项目。 2. 打开app/build.gradle文件,并在dependencies中添加以下依赖项: ``` implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'com.android.support:support-v4:28.0.0' implementation 'com.android.support:design:28.0.0' implementation 'android.arch.persistence.room:runtime:1.1.1' annotationProcessor 'android.arch.persistence.room:compiler:1.1.1' ``` 3. 创建一个Course类,用于表示课程信息,包括课程名称、教师姓名、上课地点和上课时间等。 ```java @Entity public class Course { @PrimaryKey(autoGenerate = true) private int id; private String name; private String teacher; private String location; private String time; // getters and setters } ``` 4. 创建一个CourseDao接口,用于定义访问Course表的方法,如插入、删除更新查询等。 ```java @Dao public interface CourseDao { @Query("SELECT * FROM course") List<Course> getAll(); @Query("SELECT * FROM course WHERE id = :id") Course getById(int id); @Insert void insert(Course course); @Update void update(Course course); @Delete void delete(Course course); } ``` 5. 创建一个CourseDatabase类,用于定义数据库和表的结构,以及提供获取CourseDao实例的方法。 ```java @Database(entities = {Course.class}, version = 1) public abstract class CourseDatabase extends RoomDatabase { public abstract CourseDao courseDao(); private static volatile CourseDatabase INSTANCE; public static CourseDatabase getDatabase(final Context context) { if (INSTANCE == null) { synchronized (CourseDatabase.class) { if (INSTANCE == null) { INSTANCE = Room.databaseBuilder(context.getApplicationContext(), CourseDatabase.class, "course_database") .build(); } } } return INSTANCE; } } ``` 6. 在MainActivity类中,使用CourseDatabase类创建数据库实例,并使用CourseDao类进行数据库操作。 ```java public class MainActivity extends AppCompatActivity { private CourseDao courseDao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); courseDao = CourseDatabase.getDatabase(this).courseDao(); // 插入课程信息 Course course1 = new Course(); course1.setName("Android开发"); course1.setTeacher("张三"); course1.setLocation("教学楼101"); course1.setTime("周一 9:00-11:00"); courseDao.insert(course1); // 查询所有课程信息 List<Course> courses = courseDao.getAll(); // 更新课程信息 Course course2 = courseDao.getById(1); course2.setName("Java编程"); courseDao.update(course2); // 删除课程信息 Course course3 = courseDao.getById(1); courseDao.delete(course3); } } ``` 这样,一个简单的SQLite数据库创建完成了,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值