欢迎投稿

今日深度:

安卓中的SQLite,安卓中SQLite

安卓中的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)//更新表中指定数据
deleteString 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)

大道废有仁义;慧智出有大伪;六亲不和有孝慈;国家昏乱有忠臣。

www.htsjk.Com true http://www.htsjk.com/SQLite/33308.html NewsArticle 安卓中的SQLite,安卓中SQLite SQLite数据库是一个轻量级数据库,支持标准的SQL语法,ACID事物,安卓提供了SQLiteDatabase来操作和管理数据库。 SQLiteDatabase常用方法 实例获取的部分方法:...
相关文章
    暂无相关文章
评论暂时关闭