安卓数据库帮助类

/** * 数据库帮助类,用于管理数据库 * @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    }    /** * 数据库第一次创建时调用此方法 */    @Override    public 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);    }    /** * 更新数据库的内容 */    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        // TODO Auto-generated method stub        if(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数据库基本操作完成

更多相关文章

  1. Android中的一些方法-----生生不息
  2. Android之进程查看,关闭(可操作所有进程)
  3. 手动操作Android数据库
  4. android Contacts应用中不容易理解的点
  5. android 数据库操作
  6. android 评分组件 RatingBar
  7. Android(安卓)系统操作
  8. Android(安卓)webview 点击超链接打开新的webview
  9. android > SMS 短信数据库访问

随机推荐

  1. Android服务端本地窗口FramebufferNative
  2. ERROR: Unknown command 'crunch'
  3. Android(安卓)Alarm定时任务基础
  4. Android详细教程 - 基础篇完成了
  5. android软键盘弹出,会把原来的界面挤上去
  6. Android(安卓)内核相关内容总结
  7. android webkit学习笔记1---url的load过
  8. android 多点
  9. Android实现内录
  10. Android ListView优化之getView频繁多次