Sqllite学习笔记

创建数据库

 

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

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

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

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

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

//不需再用Sql语句创建

更新数据库

 

 代码展示: 

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;

            }
        }
    }

数据库更新: 

数据库的增删改查

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

   ContentValues以map集合存储,即键值队中<key,value> key:column , value:值

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(); //资源要关闭的

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值