Sqllite学习笔记

创建数据库

1.首先我们要看这个类 SqlliteOpenhelper

2.新建一个类来继承抽象类SqlliteOpenhelper

实现里面的方法,创建构造方法

/**
 * @param context  上下文
 * @param name  数据库名称
 * @param factory  游标工厂
 * @param version  版本号
 */

3.创建这个子类对象,再调用getWritableDatabase/getReadableDatabase()方法即可创建数据库

//不需再用Sql语句创建

更新数据库

Sqllite学习笔记

代码展示:

public  class DatabaseHelper extends SQLiteOpenHelper{
        public String TAG="DatabaseHelper";
        /**
         *
         * @param context
         * name
         * factory
         * version
         */
        public DatabaseHelper(Context context) {
            super(context, Constants.DATABASE_NAME, null, Constants.VERSION);
        }

        //第一次创建数据库时调用
        @Override
        public void onCreate(SQLiteDatabase db) {
            //创建时回调
            Log.d(TAG,"创建了数据库");

            //创建字段
            String sql="create table "+Constants.TABLE_NAME+"(_id integer,name varchar,age integer);";
            db.execSQL(sql);

        }
        //更新时调用
        //版本号更新
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int Version) {
            //更新时回调
            Log.d(TAG,"更新了数据库");

            String sql;
            switch(oldVersion){
                case 1:
                    sql="alter table "+Constants.TABLE_NAME+" add  phone integer";
                    db.execSQL(sql);
                    break;
                case 2:
                    sql="alter table "+Constants.TABLE_NAME+" add  work varhcar";
                    db.execSQL(sql);
                    break;
                case 3:
                    sql="alter table "+Constants.TABLE_NAME+" add  address varhcar";
                    db.execSQL(sql);
                    break;
                case 4:
                    sql="alter table "+Constants.TABLE_NAME+" add  postname varhcar";
                    db.execSQL(sql);
                    break;

            }
        }
    }

数据库更新:

Sqllite学习笔记

数据库的增删改查

1.采用Android API 进行增删改查

ContentValues以map集合存储,即键值队中

SQLiteDatabase db = dh.getWritableDatabase();

      ContentValues values=new ContentValues();
        values.put("_id",9);
        values.put("name","jack");
        values.put("age",30);
        values.put("phone",1999196);
        values.put("work","computer");
        values.put("address","China");
        values.put("postname","beijing");
        db.insert(Constants.TABLE_NAME,null,values);
        db.close(); //资源要关闭的

Sqllite学习笔记

2.采用sql语句(建议,因为任何平台都可以通过sql进行数据库操作)

public class Dao {

    private static final String TAG = "Dao";
    private final DatabaseHelper dh;
    public String sql;
    public Dao(Context context){
        //创建数据库
        dh = new DatabaseHelper(context);
    }

    public void insert(){
        SQLiteDatabase db = dh.getWritableDatabase();
        sql="insert into "+Constants.TABLE_NAME+" (_id,name,age,phone,work,address,postname) values(?,?,?,?,?,?,?)";
        db.execSQL(sql,new Object[]{1,"john",25,18566669,"teacher","USA","China"});
        db.close(); //资源要关闭的
    }

    public void update(){
        SQLiteDatabase db = dh.getWritableDatabase();
        sql="update "+Constants.TABLE_NAME+" set _id=2 where age=25";
        db.execSQL(sql);
        db.close(); //资源要关闭的
    }

    public void delete(){
        SQLiteDatabase db = dh.getWritableDatabase();
        sql="delete from "+Constants.TABLE_NAME+" where age=25";
        db.execSQL(sql);
        db.close(); //资源要关闭的
    }

    public void query(){
        SQLiteDatabase db = dh.getWritableDatabase();
        sql="select * from "+Constants.TABLE_NAME+" where age=25";
        Cursor cursor = db.rawQuery(sql, null);

        while(cursor.moveToNext()){

            int index = cursor.getColumnIndex("age");
            String ages = cursor.getString(index);
            Log.d(TAG,"age=="+ages);
        }
        cursor.close();
        db.close(); //资源要关闭的
    }

}

数据库事务

1.安全性

        db.beginTransaction(); //开启事务
        try{
            //更新语句一
            //异常
            //更新语句二
            db.setTransactionSuccessful(); //事务成功提交
        }catch(Exception e){

        }finally {
            db.endTransaction(); //结束事务
            db.close();
        }

2.高效性

使用普通形式向数据库添加3000条数据
usetime=15204

使用开启事务向数据库添加3000条数据
usetime=218

原理:普通形式的是打开数据库,插入数据,关闭数据库。(耗时很多)
      开启事务的:把数据保存到内存里,然后一次写入到数据

Original: https://blog.csdn.net/weixin_57472035/article/details/123736789
Author: Hei D
Title: Sqllite学习笔记

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

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

(0)

大家都在看

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