设为首页 加入收藏

TOP

android SQLite数据库总结(一)
2017-10-13 10:30:48 】 浏览:2495
Tags:android SQLite 数据库 总结

SQLite

  SQLite是一种超轻量级的嵌入式数据库,大小只有几百KB,但是其语法支持标准SQL语法,同时还遵循了数据库的ACID事务,所以学过其他数据库的开发人员都很容易掌握其使用。

  sql语法就不介绍了,直接看在android中的使用

 

SQLiteOpenHelper——封装好的数据库操作辅助类,需重写

  重写方法

    onCreate:初始化数据库,创建表,添加初始数据

    onUpgrade:数据库版本升级时的数据库操作,如备份删除数据库等

  常用方法

    getReadableDatabase()    获取SQLiteDatabase对象,操作数据库

    getWritableDatabase()        获取SQLiteDatabase对象,操作数据库

    区别:在磁盘空间满或不可写时,1方法将获得只读的数据库对象,而2方法会报错,在正常情况下,获取到的都是可读写的数据库对象。

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


public class DBHelper extends SQLiteOpenHelper {

    private static final String name="my";//数据库名
    private static final int version=1;//版本号

    //重写构造方法的时候选择参数少的一项
    public DBHelper(Context context) {
        //1:上下文 2:数据库名称 3:游标创建工厂 4:数据库版本 版本只能是整数 1 2 3..
        super(context, name, null, version);
    }

    //数据库的初始化 SQLiteDatabase数据库操作对象
    //一般只在第一次运行和版本更新的时候调用
    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建数据库  主键默认自增
        db.execSQL("create table student(" +
                "_id integer not null primary key autoincrement," +
                "name varchar(20)," +
                "phone varchar(11)," +
                "gender varchar(2))");
        //添加一条测试数据
        db.execSQL("insert into student values(null,?,?,?)"
                ,new Object[]{"小黑","12345678901","男"});
    }

    /**
     * 在版本升级的时候调用
     * 修改version 为2 表示版本升级 就会调用这个方法
     * @param db 数据库操作对象
     * @param oldVersion 旧版本号
     * @param newVersion 新版本号
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

 

在android数据库的创建是需要创建对象才能创建的

在activity类中创建出一个数据库类对象

创建好数据对象就可以操作数据了 通过SQLiteDatabase获取   两种获取方法的区别上面已经提到过了

     //创建数据
        DBHelper helper =new DBHelper(this);
        //调用数据操作对象
        SQLiteDatabase dbWrite=helper.getWritableDatabase();
        SQLiteDatabase dbRead=helper.getReadableDatabase();

SQLiteDatabase给我们提供了很多操作数据的方法 

 

删除:(int) delete(String table,String whereClause,String[] whereArgs) 

   table: 表名

   whereClause:where条件  列名 占位符  id=?

   whereArgs:参数值数组

添加:(long) insert(String table,String nullColumnHack,ContentValues values)  

    nullColumnHack:为空列

    ContentValues values:通过键值对存储添加的数据  key为列 value为值

    insert方法 底层是通过拼接字符串的方式 如果ContentValues是空的 拼接成的sql语句无法执行会报错 所以给一个可以为空的列 当ContentValues为空时也可以执行 有兴趣的可以看一下源码

更新:(int) update(String table, ContentValues values, String whereClause, String[] whereArgs)

    参数意思同上

查询:(Cursor) query(boolean distinct,String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

    返回值是一个游标   这个query参数较多 简单的查询就还是写一条sql语句简单点

      boolean distinct 去重复

      String table 表名

      String[] columns要查询的列

      String selection查询条件

      String[] selectionArgs查询参数值

      String groupBy分组

      String having分组条件

      String orderBy排序

      String limit分页查询限制

关闭数据库:(void) close()

执行一条sql语句:(void) execSQL(String sql) 增删改查

查询查询sql:(Cursor) rawQuery(String sql, String[] selectionArgs)

 

事务

        try {
            db.beginTransaction();//开启事务
            // db.update();
            // db.insert();
            db.setTransactionSuccessful(); //没有设置事物成功 finally就会回滚
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            db.endTransaction();
        }    

 

贴代

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇解决Android&eclipse无法RunAs的.. 下一篇Android之动态申请权限(API23以..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目