关于SQLite的学习与使用

一、SQLite的定义

  • SQLite数据库存储是Android系统提供的数据存储方式
  • 为嵌入式设备设计的轻量级的数据库
  • 占用资源低,只需要几百k的内存
  • 支持标准的SQL语法,遵循数据库的ACID(增删改查)事务
  • 无需安装,无需用户名密码就可登录

二、SQLite的使用步骤

  • 首先新建一个类继承SQLiteOpenHelper;
  • 实现其构造方法;
  • 重写onCreate方法;

注意点:此方法只会在第一次创建时执行即只会执行一次
此方法有一个SQLiteDatabase参数对象,通过调用execSQL方法执行建表SQL语句


  • 重写onUpgrade方法;

注意点:此方法用来升级数据库表
需要增加字段或表时,传递进来一个新的数据库版本号,就会触发此方法


  • 实例化SQLiteOpenHelper的子类对象
  • 调用getReadableDatabase方法或者getWritableDatabase方法

三、SQLite使用实例(以修改学生信息为例)

1.首先在layout布局文件里创建一些需要使用的控件

<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.myapplication13.InsertActivity">

    <EditText
        android:id="@+id/insert_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入姓名"/>
    <EditText
        android:id="@+id/change_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="修改的姓名"/>
    <Button
        android:id="@+id/insert_btn_insert"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="插入"/>
    <Button
        android:id="@+id/insert_btn_check"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询"/>
    <Button
        android:id="@+id/change_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="修改"/>
    <Button
        android:id="@+id/delete_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除"/>
</LinearLayout>

2.在主体类里定义这些控件,绑定ID,并且对Button控件设置监听

public class InsertActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText insertET;
    private EditText changeET;
    private Button insertBtn;
    private Button checkBtn;
    private Button changeBtn;
    private Button deleteBtn;
        bindId();
 private void bindId() {
        insertET = findViewById(R.id.insert_et);
        insertBtn = findViewById(R.id.insert_btn_insert);
        changeET=findViewById(R.id.change_et);
        checkBtn = findViewById(R.id.insert_btn_check);
        changeBtn=findViewById(R.id.change_btn);
        deleteBtn=findViewById(R.id.delete_btn);


        insertBtn.setOnClickListener(this);
        checkBtn.setOnClickListener(this);
        changeBtn.setOnClickListener(this);
        deleteBtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {

tips:因为Button控件较多,所以设置了全局监听事件
3.新建一个类来继承SQLiteOpenHelper方法,并且实现onCreate和onUpgrade方法。建一个表语句,并且在onCreate方法里用execSQL将建的表语句添加进去

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

/**
 * Created by 华硕 on 2018/3/20.
 */

public class DBHelper extends SQLiteOpenHelper {
    //建表语句
    private String sql = "create table student(" +
            "id integer primary key autoincrement not null," +
            "age integer," +
            "name text not null," +
            "score real" +
            ")";

    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        //创建数据表结构语句
        db.execSQL(sql);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        //创建数据库表结构

    }
}

tips:由于onUpgrade是更新升级数据库表的,所以暂且不在里面写程序
4.回到主体类,实例化SQLiteOpenHelper对象,即dbHelper

    private DBHelper dbHelper;
dbHelper=new DBHelper(this,"mydb",null,1);

5.在点击事件方法里来实现插入,查询,修改,删除四个方法
插入

 switch (view.getId()) {
            case R.id.insert_btn_insert:
                SQLiteDatabase sqLiteDatabase=dbHelper.getWritableDatabase();
                ContentValues values=new ContentValues();
                values.put("name",insertET.getText().toString());
                sqLiteDatabase.insert("student",null,values);
                break;

查询

 case R.id.insert_btn_check:
                SQLiteDatabase sqLiteDatabase1=dbHelper.getReadableDatabase();
                Cursor cursor=sqLiteDatabase1.query("student",null,null,null,null,null,null);
                cursor.moveToFirst();
                do {
                    String name=cursor.getString(cursor.getColumnIndex("name"));
                    Log.e("MAIN",name);
                }while (cursor.moveToNext());
                cursor.close();
                break;

修改

 case R.id.change_btn:
                String name=insertET.getText().toString();
                String newName=changeET.getText().toString();
                SQLiteDatabase sqLiteDatabase2=dbHelper.getReadableDatabase();
                ContentValues values1=new ContentValues();
                values1.put("name",newName);
                sqLiteDatabase2.update("student",values1,"name=?",new String[]{name});
                break;

删除

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

笔芯!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值