本文整理自网络,侵删。
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(); }
贴代码咯 执行sql语句 和封装好的方法
相关阅读 >>
asp.net下Sqlite(轻量级最佳数据库) 原理分析和开发应用
navicat图形化界面之navicatpremium12安装与使用教程
python的flask框架中使用flask-sqlalchemy管理数据库的教程
scp远程vps快速搬家和wdcp升级php5.3安装memcached和eaccelerator教程
更多相关阅读请进入《Sqlite》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。