日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android之数据库操作

發布時間:2024/7/23 Android 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android之数据库操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安卓數據庫幫助類

/*** 數據庫幫助類,用于管理數據庫* @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之数据库操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。