安卓数据库帮助类

/*** 数据库帮助类,用于管理数据库* @author Administrator**/
public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {private String tag="PersonSQLiteOpenHelper";public PersonSQLiteOpenHelper(Context context) {//数据库名,数据库版本号super(context, "zj.db", null, 2);// TODO Auto-generated constructor stub}/*** 数据库第一次创建时调用此方法*/@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stub//操作数据库String sql="create table person(_id integer primary key,name varchar(20),age integer);";db.execSQL(sql);}/*** 更新数据库的内容*/@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubif(oldVersion==1&&newVersion==2){Log.i(tag, "数据库更新了");//在表中添加一个余额列db.execSQL("alter table person add balance interger;");}else if(oldVersion==2&&newVersion==3){//其他操作}}}

其中onCreate只在第一次创建是调用,OnUpergrade在数据库版本号升级,如要修改数据库,为数据库增加一列,或删除一列的情况下使用

数据库操作

打开数据库

private PersonSQLiteOpenHelper mOpenHelper;//数据库帮助类public PersonDao(Context context){mOpenHelper = new PersonSQLiteOpenHelper(context);}

由mOpenHelper得到数据库

SQLiteDatabase db= mOpenHelper.getWritableDatabase();

此时可设置版本号,便会根据版本号调用OnUpgrate

         db.getVersion();db.setVersion(2);

对数据库增删改查有两种方式

插入数据 ,直接用SQL语句

public void insert(Person person){SQLiteDatabase db= mOpenHelper.getWritableDatabase();if(db.isOpen()){//执行添加的操作db.execSQL("insert into person(name, age) values(?, ?);",new Object[]{person.getName(),person.getAge()});db.close();}}

插入数据方法二

public void insert(Person person){SQLiteDatabase db= mOpenHelper.getWritableDatabase();if(db.isOpen()){ContentValues values=new ContentValues();values.put("name", person.getName());values.put("age", person.getAge());//执行添加的操作long id=db.insert("person", null, values);Log.i(tag, "id:"+id);db.close();}}

第一种方法删除与更新

public void delete(int id){SQLiteDatabase db= mOpenHelper.getWritableDatabase();if(db.isOpen()){db.execSQL("delete from person where _id = ?;",new Integer[]{id});//执行添加的操作db.close();}}public void update(int id,String name){SQLiteDatabase db= mOpenHelper.getWritableDatabase();if(db.isOpen()){db.execSQL("update person set name = ? where id = ?;",new Object[]{name,id});//执行添加的操作db.close();}}

第二种方法删除与更新

public void delete(int id){SQLiteDatabase db= mOpenHelper.getWritableDatabase();if(db.isOpen()){//执行添加的操作String whereClause=" _id = ?";String []whereArgs={id+""};int count=db.delete("person", whereClause,whereArgs );Log.i(tag, "count="+count+"行");db.close();}}public void update(int id,String name){SQLiteDatabase db= mOpenHelper.getWritableDatabase();if(db.isOpen()){//执行添加的操作ContentValues values=new ContentValues();values.put("name", name);int count=db.update("person", values, "_id=?", new String[]{id+""});Log.i(tag, "修改了count="+count+"行");db.close();}}

第一种方法查询一项与查询所有

public List<Person> queryAll(){SQLiteDatabase db= mOpenHelper.getReadableDatabase();if(db.isOpen()){Cursor cursor= db.rawQuery("select * from person;", null);if(cursor!=null&&cursor.getCount()>0){List<Person> personList=new ArrayList<Person>();int id;String name;int age;while(cursor.moveToNext()){id=cursor.getInt(0);name=cursor.getString(1);age=cursor.getInt(2);personList.add(new Person(id, name, age));}db.close();return personList;}db.close();}return null;}public Person queryItem(int id){SQLiteDatabase db= mOpenHelper.getReadableDatabase();if(db.isOpen()){Cursor cursor= db.rawQuery("select * from person where id= ?;", new String []{id+""});if(cursor!=null&&cursor.moveToFirst()){int id1=cursor.getInt(0);String name=cursor.getString(1);int age=cursor.getInt(2);db.close();return new Person(id1,name,age);}db.close();}return null;}

第二种方法查询数据库

public List<Person> queryAll(){SQLiteDatabase db= mOpenHelper.getReadableDatabase();if(db.isOpen()){String [] columns={"_id","name","age"};String selection=null;String[] selectionArgs=null;String groupBy=null;String having=null;String orderBy=null;Cursor cursor=db.query("person", columns, selection, selectionArgs, groupBy, having, orderBy);int id;String name;int age;if(cursor!=null&&cursor.getCount()>0){List<Person> personList=new ArrayList<Person>();while(cursor.moveToNext()){//向下移一位id=cursor.getInt(0);name=cursor.getString(1);age=cursor.getInt(2);personList.add(new Person(id,name,age));}db.close();return personList;}db.close();}return null;}public Person queryItem(int id){SQLiteDatabase db= mOpenHelper.getReadableDatabase();if(db.isOpen()){String [] columns={"_id","name","age"};String selection="_id=?";String[] selectionArgs={id+""};String groupBy=null;String having=null;String orderBy=null;Cursor cursor=db.query("person", columns, selection, selectionArgs, groupBy, having, orderBy);int _id;String name;int age;if(cursor!=null&&cursor.moveToFirst()){_id=cursor.getInt(0);name=cursor.getString(1);age=cursor.getInt(2);db.close();return new Person(_id,name,age);}db.close();}return null;}

数据库的事务,防止多线程并发操作

public void testTransaction(){PersonSQLiteOpenHelper openHelper=new PersonSQLiteOpenHelper(getContext());SQLiteDatabase db= openHelper.getWritableDatabase();if(db.isOpen()){try{//开户事务db.beginTransaction();//执行业务逻辑db.execSQL("update person set balance =balance -1000 where name='zhangsan';");//ATM机损坏//int result=10/0;db.execSQL("update person set balance =balance +1000 where name='lisi';");//标记事务成功db.setTransactionSuccessful();}finally{//停止事务db.endTransaction();}db.close();}}public void testTransationInsert(){PersonSQLiteOpenHelper openHelper=new PersonSQLiteOpenHelper(getContext());SQLiteDatabase db= openHelper.getWritableDatabase();if(db.isOpen()){//记录当前时间long start=System.currentTimeMillis();//开始添加数据try{db.beginTransaction();for(int i=0;i<10000;i++){db.execSQL("insert into person(name, age, balance) values('wang" + i + "', " + (10 + i) + ", " + (10000 + i) + ")");            }db.setTransactionSuccessful();}finally{db.endTransaction();}//记住结束时间,计算耗时long end=System.currentTimeMillis();long diff=end-start;Log.i(tag, "耗时:"+diff+"ms");db.close();}}

Android数据库基本操作完成

Android之数据库操作相关推荐

  1. Android sqlite数据库操作通用框架AHibernate(二)源码-用于交流

    贴出源代码供大家交流使用,欢迎朋友们对代码提供宝贵意见,直接写到评论中即可.使用示例和步骤见上一篇博客:http://blog.csdn.net/lk_blog/article/details/745 ...

  2. Android sqlite数据库操作通用框架AHibernate(一)-CRUD示例和使用步骤

    AHibernate简介 一句话描述,使用AHibernate框架进行sqlite数据库操作您将从重复性劳动中解脱出来. (一)支持功能: 1.自动建表,支持属性来自继承类:可根据注解自动完成建表,并 ...

  3. Android sqlite数据库操作通用框架AHibernate(三)-升级为1.1版本

    2012-04-13我发布了AHibernate1.0,后面我的博客中很多个例子都用到了这个框架,看到这些博客的访问量和代码下载量我觉得我的辛苦没有白费.但任何代码都不会非常完美,在使用中发现了一些b ...

  4. android sqlite alert table,android sqlite数据库操作

    sqlite有一点不同于其他常见数据库,就是sqlite数据库是存成文件的,可以直接把该文件从手机里导出来,以文件的形式存在,然后放到电脑上查看. Android操作数据库有如下步骤: 1.继承SQL ...

  5. Android Sqlite3数据库操作

    android Sqlite adb 简单操作 # adb shell # cd /data/data/com.android.provider.settings/databases/ # sqlit ...

  6. Android Sqlite数据库操作

    Android中的数据存储方式有:SharedPreferences 首选项,文件,网络,sqllite; 很多时候开发APP时需要缓存数据,其中以SQL为最常用了.  在此记录一下sql的各种方法. ...

  7. android xutils数据库操作,XUtils3.0之本地数据库操作

    5](http://mvnrepository.com/)找到对应的版本 compile 'org.xutils:xutils:3.0' -->build project Paste_Image ...

  8. java 安卓 sqlite数据库,android sqlite数据库操作

    [实例简介] [实例截图] [核心代码] package com.example.datastorage; import android.app.Activity; import android.ap ...

  9. android中的数据库操作(SQLite)

    android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库   an ...

最新文章

  1. 7-1 对称日 (15分)
  2. Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake 线段树维护dp
  3. 三维图----2(房子)
  4. python nose测试框架全面介绍十---用例的跳过
  5. 荣耀30会不会升级鸿蒙,荣耀手机不能升级鸿蒙吗?有博主给出升级名单
  6. Gridview光棒效果
  7. 国内达梦数据库相关函数-时间日期
  8. 不×××,用google!!
  9. 安装和使用Entrez Direct
  10. 【读书笔记】金字塔原理-构建金字塔的序言
  11. win10远程计算机证书错误,设置win10系统ie证书错误的详细办法
  12. 【公告】C币兑换平台上线
  13. 谁是第一个计算机系?
  14. 线性回归使用的基本条件
  15. 任务调度Schedulerx2.0分布式计算之MapReduce模型
  16. 第一次接触动态规划解题
  17. windows下C语言学习--在两台电脑之间传文件
  18. 数据库技术与应用(SQL Server)——【SQL Server数据定义功能】
  19. 云盘下载利器proxyee-down
  20. Eureka高可用部署 -夜幕思年华

热门文章

  1. 四个关键步骤,精进算法和数据结构 ​
  2. 美团点评移动网络优化实践
  3. 美团点评境外度假团队前端项目开发实践总结
  4. 论文浅尝 | SMBOP: Semi-autoregressive Bottom-up Semantic Parsing
  5. 领域应用 | 知识图谱的技术与应用
  6. 国科大高级人工智能7-命题逻辑
  7. Memcached 使用 及.NET客户端调用
  8. 好久没玩laravel了,5.6玩下(三)
  9. js中this的指向问题
  10. [Go语言]从Docker源码学习Go——init()方法和identifier首字母大小写区分