Android基础之Sqlite数据库
2016-03-10 16:39
561 查看
在Android平台上,集成了一个嵌入式关系型数据库—SQLite,它是一种非常轻量的数据库管理系统,SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,SQLite通过文件来保存数据库,一个文件就是一个数据库。
- 常用类介绍
- SQLiteOpenHelper
数据库辅助抽象类,通过实现它的子类可以创建数据库以及实现版本更新,通过getWriteableDatabase获得getReadableDatabase获取数据库访问类
-SQLiteDatabase:数据库访问类
通过数据库访问类,可以实现对数据库的增删改查等操作
Android创建Sqlite数据库
SQLite数据库是在第一次调用的时候创建数据库的
创建数据库的步骤:
1.定义一个db辅助类,继承SQLiteOpenHelper抽象类,通过构造方法设置数据库名及版本信息。
2. 重写onCreate()方法,该方法只会在数据库第一次创建的时候调用,在此方法中适合做数据库初始化操作,比如创建数据表等。
3. 重写onUpGrade() , 当数据库版本更新时调用,适合做表结构的修改或者添加删除表。
* 参考代码:
SQLite数据库增删改查
1 添加记录
2 删除记录
3 查询
4 更新记录
写博客纯属个人爱好,如果又不对的地方,欢迎吐槽。
- 常用类介绍
- SQLiteOpenHelper
数据库辅助抽象类,通过实现它的子类可以创建数据库以及实现版本更新,通过getWriteableDatabase获得getReadableDatabase获取数据库访问类
-SQLiteDatabase:数据库访问类
通过数据库访问类,可以实现对数据库的增删改查等操作
Android创建Sqlite数据库
SQLite数据库是在第一次调用的时候创建数据库的
创建数据库的步骤:
1.定义一个db辅助类,继承SQLiteOpenHelper抽象类,通过构造方法设置数据库名及版本信息。
2. 重写onCreate()方法,该方法只会在数据库第一次创建的时候调用,在此方法中适合做数据库初始化操作,比如创建数据表等。
3. 重写onUpGrade() , 当数据库版本更新时调用,适合做表结构的修改或者添加删除表。
* 参考代码:
/** * 数据库辅助类的构造方法,当数据库存在,则直接返回,没有则创建数据库,并调用onCreate()初始化数据库 * @param context:上下文 * @param name :数据库名 以文件的形式保存 * @param factory :游标工厂,一般是由系统来提供 * @param version :版本 最小为1的整数 */ public DBHelper(Context context) { super(context, NAME, null, VERSION); } /** * 当初始化数据库的时候调用,在这里进行数据表的创建,相应初始数据的添加 */ @Override public void onCreate(SQLiteDatabase db) { //创建book表 String sqlStr="create table t_book(_id integer primary key autoincrement ,name text ,price integer)"; //执行sql语句 db.execSQL(sqlStr); } /** * 当版本要更新的时候调用,一般实现数据表结构的修改, * 添加删除表,当 4000 newVersion 大于oldVersion时调用 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("drop table if exists t_book "); onCreate(db); System.out.println("onUpgrade"); }
SQLite数据库增删改查
1 添加记录
public int save(ContentValues values){ //取得SqliteDatabase 对象来对数据库进行增删改查 SQLiteDatabase db=dbHelper.getWritableDatabase(); /** * 1、table:表名 * 2、nullColumnHack:当values为null时 ,默认填充要插入的字段 * 3、ContentValues:内容值,好比HashMap */ Long row=db.insert(TABLE, null, values); // insert into table (name,price) values("鬼吹灯1","35") //假如 ContentValues为空 :insert into table(null)values (null) //关闭数据库 db.close(); return row.intValue(); }
2 删除记录
//删除一条记录 public int delete(int id){ SQLiteDatabase db=dbHelper.getWritableDatabase(); /** * table:表名 * whereClause:条件 * whereArgs:条件占位符 id=? new String[]{id} */ int num=db.delete(TABLE, " id=? ", new String[]{String.valueOf(id)}); db.close(); return num; }
3 查询
//查找所有记录 public ArrayList<HashMap<String, Object>> find(){ SQLiteDatabase db=dbHelper.getReadableDatabase(); ArrayList<HashMap<String,Object>>data=new ArrayList<HashMap<String,Object>>(); Cursor cursor=db.query(TABLE, null, null, null, null, null, PRICE+" desc"); while(cursor.moveToNext()){ HashMap<String, Object> map=new HashMap<String, Object>(); map.put(ID, cursor.getInt(cursor.getColumnIndex(ID))); map.put(NAME, cursor.getString(cursor.getColumnIndex(NAME))); map.put(PRICE, cursor.getInt(cursor.getColumnIndex(PRICE))); data.add(map); } db.close(); return data; } /** * 查寻数据库中的数据,返回的值为Cursor类型 */ public Cursor findByCursor(){ SQLiteDatabase db=dbHelper.getReadableDatabase(); Cursor cursor=db.query(TABLE, null, null, null, null, null,null); //用Cursor返回 ,不能关闭数据库 return cursor; }
4 更新记录
/** * 记录更新 * @param values * @return */ public int update(ContentValues values){ //更新某条记录 传一个Id过来 String id=values.getAsString(ID); SQLiteDatabase db=dbHelper.getWritableDatabase(); int num=db.update(TABLE, values, " id=?", new String[]{id}); db.close(); //关闭数据库 return num; }
SQLite事务处理
/** * 一条记录更新 * @param values * @return */ public int update(ContentValues values){ //更新某条记录 传一个Id过来 String id=values.getAsString(ID); SQLiteDatabase db=dbHelper.getWritableDatabase(); int num=db.update(TABLE, values, " id=?", new String[]{id}); db.close(); //关闭数据库 return num; }
写博客纯属个人爱好,如果又不对的地方,欢迎吐槽。
相关文章推荐
- android MediaScanner 扫出来的ID3 MP3文件演唱者信息 乱码
- Android gradle 批量改包名
- AndroidStudio怎样导入jar包
- Android仿淘宝商品浏览界面图片滚动效果
- Android Studio 打包apk,自动追加版本号和版本名称
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- android studio logcat 包名过滤失效问题
- 用Android studio进行 OpenCV 开发的第一个项目
- 为Android应用添加搜索功能
- 初识Volley框架
- Android Fresco实现图片毛玻璃效果
- FrameLayout组件居中显示
- Android -Intent -ACTION_
- Activity 跳转全解 android-Intent (带参数&不带参数的跳转)
- Android虚拟键遮挡控件
- Android自定义Toast
- MPAndroidChart属性大全
- Android四大组建
- android枚举用法
- android选择控件