安卓中的SQLite,安卓中SQLite
SQLite数据库是一个轻量级数据库,支持标准的SQL语法,ACID事物,安卓提供了SQLiteDatabase来操作和管理数据库。
SQLiteDatabase常用方法
- 实例获取的部分方法:
//打开path路径对应的数据库
public static SQLiteDatabase openDatabase(@NonNull String path, @Nullable CursorFactory factory, @DatabaseOpenFlags int flags)
// 打开File对应的数据库 如果数据库不存在则创建一个新的数据库。
public static SQLiteDatabase openOrCreateDatabase(@NonNull File file,@Nullable CursorFactory factory)
//打开path路径对应的数据库 如果数据库不存在则创建一个新的数据库。
public static SQLiteDatabase openOrCreateDatabase(@NonNull String path, @Nullable CursorFactory factory)
- 实例方法,数据表和事物
execSQL(String sql,Object[] bindArgs)//执行带占位符的SQL语句
execSQL(String sql)//执行SQL语句
insert(String table,String nullColumnHack,ContentValues Values)//向指定的表中插入数据
Update(String table,ContentValues Values,String whereClause,String[] whereArgs)//更新表中指定数据
delete(String table ,String whereClause,String[] whereArgs)//删除表中特定数据
Cursor query(String table, String[] columns, String selection,
String[] selectionArgs, String groupBy, String having,
String orderBy, String limit) //对指定表进行查询 返回一个游标对象。
Cursor query(boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) //按条件查询 第一个为消元属性,去重复行的。
Cursor rawQuery(String sql, String[] selectionArgs) //执行带占位符的SQL语句
beginTransaction();//开始事物
endTransaction()//结束事物
从上面的方法中看出,SQL执行语句有两种方式,一种是直接用execSQL()方法由我们给出完整的数据库执行语句,另一种是用insert(),update(),delete()和query()插叙方法由我们给出规则值进行操作。
- 创建表
//指定创建表的语句
String sql="create table tablename (name varchar(255),age integer)
//由sqLiteDatabase来执行语句
sqLiteDatabase.execSQL(sql);
- insert 插入值
//直接执行SQL语句
sqLiteDatabase.execSQL("insert into tablename(列1,列2) values(值1,值2) ");
sqLiteDatabase.execSQL("insert into tablename(?,?)", new String[]{值1,值2});
//特定方法执行 表名:table 强行插入null值的数据的列的名称:nullColumnHack 需要插入的内容:Values ContentValues是以hashMap存储数据列名为键 列值为值的map
insert(String table,String nullColumnHack,ContentValues Values)
//比如:
ContentValues values=new ContentValues();
values.put("name","猪八戒");
values.put("age",9999);
sqLiteDatabase.insert("表名",null,values);//返回插入行的行id,-1表示插入失败。
- update 更新操作
//表名:table 新的数据values 执行语句的筛选条件:whereClause 执行条件的参数值:whereArgs
Update(String table,ContentValues Values,String whereClause,String[] whereArgs)
ContentValues values=new ContentValues();
values.put("name","老人家");
sqLiteDatabase.insert("表名",values,"age>?",new String[]{"50"});//把年领大于50的人的名字都改成老人家。
- query()查询方法
//是否去重复行 表名 需要查询的列名 返回的行的过滤器 占位符 group by语句 having语句 order by语句 limit 返回的行数
Cursor query(boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) //按条件查询 第一个为消元属性,去重复行的。
- 事物
sqLiteDatabase.beginTransaction();
try{
//要执行的DML语句
//如果语句执行成功 要设置执行成功 否则就会事物回滚
sqLiteDatabase.setTransactionSuccessful();
}finally {
sqLiteDatabase.endTransaction();
}
Cursor
Cursor类似于JDBC中的ResultSet,用来管理SQL语句返回结果集的类。
-主要方法
move(int )//在结果集上下移动,int负上 正下
boolean moveToFirst()//移动到第一行,当然也有移动到下一行,上一行,指定行,最后一行,成功就返回true
getType(int columnIndex)//Type是获取的类型 int是列的下标 从0开始
String[] getColumnNames();//获取列的名称
int getColumnCount();//有多少列
String getColumnName(int columnIndex);//第多少列的名称
但是作为安卓开发的我们哪有那么6的数据库技术,一般都是用封装好的框架来执行数据库操作的。比如安卓自带的SQLiteOpenHelper类或者开源库LitePal。工具一直在更新任重而道远啊。。
MARK(18)
大道废有仁义;慧智出有大伪;六亲不和有孝慈;国家昏乱有忠臣。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。