SQLite

一.为什么要用SQLite?

1.SharedPreferences是以XML形式存储数据的,只适合存储基本数据类型的数据。

2.文件存储的内容在提取(解析)数据时,相对复杂。

3.当数据量大、结构复杂时,如果使用 SharedPreferences和文件存储对数据的操作将变得非常复杂,效率低下,容易出错,Android中提供了SQLite数据存储,帮助我们解决这些问题。

二.什么是SQLite?

1.SQLite数据库存储时Android系统提供的数据存储方式之一

2.SQLite是专为嵌入式设备设计的一款轻量级数据库

3.SQLite占用资源非常低,在嵌入式设备中,只需要几百K的内存。

4.SQLite支持标准的SQL语法,遵循数据库的ACID事务(ACID:增删改查)

5.SQLite不需要安装,不需要用户名密码就可以使用。

三.如何创建数据库和数据表?

1.新建类继承SQLiteOpenHelper;

2.实现构造方法;

(1).父类中未提供默认构造方法,必须显示调用父类的构造方法。

(2).需要传递创建的数据库名称以及数据库版本。

例如:

SQLiteOpenHelper(Context context,String name,CursorFactory factory, int version)

(1).Context context:上下文环境

(2).String name:数据库名

(3).CursorFactory factory:允许开发者查询数据的时候返回一个自定义的Cursor,一般传入null。

(4). int version:当前的数据库的版本号,可用于对数据库进行升级操作。

3.重写onCreate方法;

(1).此方法只会在第一次创建时执行,只会执行一次。

(2).此方法中使用标准的SQL语句创建数据表。

(3).onCreate方法有一个SQLiteDatabase对象参数,通过调用execSQL方法执行建表SQL语句。

4.重写onUpgrade方法;

(1).此方法用来升级数据库表结构时触发。

(2).当需要增加表字段或增加表时,传递进来一个新的数据库版本号,就会触发此方法。

5.实例化SQLiteOpenHelper的子类对象;

6.调用getReadableDatabase方法或getWritableDatabase方法。

代码如下:

package com.example.androidthree;

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

/**
 * Created by lenovo on 2018/6/13.
 */

public class MySqliteHelper extends SQLiteOpenHelper {

    private String sql="create table student(" +
            "id integer primary key autoincrement not null," +
            "name text," +
            "age integer" +
            ")";

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

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(sql);//创建数据库及数据表

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        //如果不需要更新,就可以不写
    }
}

四.如何添加数据?

private void addStudent() {
        String name = studentName.getText().toString();
        int age = Integer.parseInt(studentAge.getText().toString());

        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", age);

        MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();
        sqLiteDatabase.insert("student", null, values);
    }

五.如何删除数据?

private void deleteStudent() {

        String name = studentName.getText().toString();

        MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();

        sqLiteDatabase.delete("student", "name=?", new String[]{name});

    }

六.如何修改数据?

private void updateStudent() {

        String name = studentName.getText().toString();

        MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", "FFF");
        //第三个参数——修改条件
        //第三个参数——赞占位符填充值
        sqLiteDatabase.update("student", values, "name=?", new String[]{name});
    }

七.如何查找数据?

private void listStudent() {
        students.clear();
        MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();
        //获取游标
        Cursor cursor = sqLiteDatabase.query("student", null, null, null, null, null, null);
        cursor.moveToFirst();//将游标移到第一个
        do {
            String name = cursor.getString(cursor.getColumnIndex("name"));
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            int age = cursor.getInt(cursor.getColumnIndex("age"));
            Log.e(TAG, "listStudent: " + id + "-" + name + "-" + age);
            Student student=new Student(id,name,age);
            students.add(student);

            StudentAdapter studentAdapter=new StudentAdapter(students,this);
            studentLv.setAdapter(studentAdapter);
        } while (cursor.moveToNext());

    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值