欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android應用中內(nèi)嵌SQLite數(shù)據(jù)庫的基本操作指南

 更新時間:2016年02月29日 14:43:59   作者:時光微涼  
這篇文章主要介紹了Android應用中內(nèi)嵌SQLite數(shù)據(jù)庫的基本操作指南,包括創(chuàng)建DAO類接口以及相關(guān)的增刪查改等操作的明說,需要的朋友可以參考下

一、首先寫一個類繼承SQLiteOpenHelper類

重寫他的方法指定db的名稱、版本,重寫oncreat和onUpgrade方法,寫SQL語句創(chuàng)建表

public class MySQLiteOpenhelper extends SQLiteOpenHelper {
  private static String name = "person.db";
  private static int version = 1;
  public MySQLiteOpenhelper(Context context){
    super(context,name,null,version);  
  }

  /*
   *數(shù)據(jù)庫第一次被創(chuàng)建時調(diào)用的方法
   *db是被創(chuàng)建的數(shù)據(jù)庫
   */
  @Override
  public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table person(id integer primary key autoincrement,name varchar(20),number varchar(20) )");

  }
  /*當數(shù)據(jù)庫版本更新時調(diào)用此方法*/
  @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

  }

二、創(chuàng)建一個DAO類對外提供增刪改查接口
其中執(zhí)行增刪改查的方法可以用SQL語句也可以使用系統(tǒng)給出的API,下面的代碼中把兩種方法都寫了出來

public class Persondao {
  private MySQLiteOpenhelper helper;
  public Persondao(){

  }
  public Persondao(Context context){
    helper = new MySQLiteOpenhelper(context);
  }
  public void add(String name,String number){
    SQLiteDatabase db = helper.getWritableDatabase();
    db.execSQL("insert into person (name,number)values(?,?)",new Object[]{name,number});
    /*ContentValues values = new ContentValues();
    values.put("number",number);
    values.put("name", name);
    long id = db.insert("Person",null, values);*/
    db.close();

  }
  public boolean find(String name){
    SQLiteDatabase db = helper.getWritableDatabase();
    //Cursor cursor = db.rawQuery("select *from person where name=?", new String[]{name});
    Cursor cursor = db.query("person", null,"name=?",new String[]{name},null,null, null);
    boolean result =cursor.moveToNext();
    cursor.close();
    db.close();
    return result;    
  }
  public int update(String name,String newnumber){
    SQLiteDatabase db = helper.getWritableDatabase();
    //db.execSQL("update person set number=? where name=?",new Object[]{newnumber,name});
    ContentValues values = new ContentValues();
    values.put("number",newnumber);
    int number = db.update("person", values,"name=?",new String[]{newnumber});
    db.close();
    return number;
  }
  public int delet(String name){
    SQLiteDatabase db = helper.getWritableDatabase();
    //db.execSQL("delete from person where name=?",new String[]{name});
    int number = db.delete("person","name=?",new String[]{name});
    db.close();  
    return number;

  }
  public List<Person> findAll(){
    List<Person> persons = new ArrayList<Person>();
    SQLiteDatabase db = helper.getWritableDatabase();
    //Cursor cursor = db.rawQuery("select *from person", null);
    Cursor cursor = db.query("person",new String[]{"id","name","number"}, null, null, null, null, null);
    while (cursor.moveToNext()) {
      int id = cursor.getInt(cursor.getColumnIndex("id"));
      String name = cursor.getString(cursor.getColumnIndex("name"));
      String number = cursor.getString(cursor.getColumnIndex("number"));
      Person p = new Person();
      persons.add(p);

    }
    db.close();
    cursor.close();
    return persons; 

  }

}

三、增刪改查操作

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
public class ToDoDB extends SQLiteOpenHelper {
  private final static String DATABASE_NAME = "todo_db";
  private final static int DATABASE_VERSION = 1;
  private final static String TABLE_NAME = "todo_table";
  public final static String FIELD_id = "_id";
  public final static String FIELD_TEXT = "todo_text";
 
  public ToDoDB(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
  }
 
  @Override
  public void onCreate(SQLiteDatabase db) {
    /* 建立table */
    String sql = "CREATE TABLE " + TABLE_NAME + " (" + FIELD_id
        + " INTEGER primary key autoincrement, " + " " + FIELD_TEXT
        + " text)";
    db.execSQL(sql);
  }
 
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;
    db.execSQL(sql);
    onCreate(db);
  }
 
  public Cursor select() {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db
        .query(TABLE_NAME, null, null, null, null, null, null);
    return cursor;
  }
 
  public long insert(String text) {
    SQLiteDatabase db = this.getWritableDatabase();
    /* 將新增的值放入ContentValues */
    ContentValues cv = new ContentValues();
    cv.put(FIELD_TEXT, text);
    long row = db.insert(TABLE_NAME, null, cv);
    return row;
  }
 
  public void delete(int id) {
    SQLiteDatabase db = this.getWritableDatabase();
    String where = FIELD_id + " = ?";
    String[] whereValue = { Integer.toString(id) };
    db.delete(TABLE_NAME, where, whereValue);
  }
 
  public void update(int id, String text) {
    SQLiteDatabase db = this.getWritableDatabase();
    String where = FIELD_id + " = ?";
    String[] whereValue = { Integer.toString(id) };
    /* 將修改的值放入ContentValues */
    ContentValues cv = new ContentValues();
    cv.put(FIELD_TEXT, text);
    db.update(TABLE_NAME, cv, where, whereValue);
  }
}

四、寫一個JavaBean設(shè)置他的get、set方法

public class Person { 
  private int id;
  private String name;
  private String number;

  public Person(){

  }

  public Person(int id, String name, String number) {
    this.id = id;
    this.name = name;
    this.number = number;
  }
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getNumber() {
    return number;
  }
  public void setNumber(String number) {
    this.number = number;
  }

}

五、mainactivity中使用它

private SQLiteOpenHelper helper;
Persondao dao = new Persondao();

helper = new MySQLiteOpenhelper(this);
helper.getWritableDatabase();    
SQLiteDatabase db = helper.getWritableDatabase();

六、關(guān)于數(shù)據(jù)庫的事務處理
android開發(fā)中數(shù)據(jù)庫的操作非常慢,將所有操作打包成一個事務能夠大大的提高處理速度,其中最重要的是保證了數(shù)據(jù)的一致性,讓事務中的所有操作都能成功執(zhí)行,或者失敗,或者這所有操作都回滾。

SQLiteDatabase db = helper.getWritableDatabase();
db.beginTransaction();
try{

 //在這里執(zhí)行多個數(shù)據(jù)庫操作,執(zhí)行過程中可能會拋出異常
 db.execSQL("update person set number=? where name=?",new Object[]{"1",jacky});
 db.execSQL("update person set number=? where name=?",new Object[]{"2","sunny"});
 db.setTransactionSuccessful();
}catch{
 //捕獲異常
 throw e;
}finally{
  //所有操作完成結(jié)束一個事務
  db.endTransaction();
  db.close;
}

相關(guān)文章

  • Flutter pageview切換指示器的實現(xiàn)代碼

    Flutter pageview切換指示器的實現(xiàn)代碼

    這篇文章主要介紹了Flutter pageview切換指示器的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Android自定義加載框效果

    Android自定義加載框效果

    這篇文章主要為大家詳細介紹了Android自定義加載框效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Kotlin startActivity跳轉(zhuǎn)Activity實現(xiàn)流程詳解

    Kotlin startActivity跳轉(zhuǎn)Activity實現(xiàn)流程詳解

    在Android當中,Activity的跳轉(zhuǎn)有兩種方法,第一個是利用startActivity(Intent intent);的方法,第二個則是利用startActivityForResult(Intent intent,int requestCode);的方法,從字面上來看,這兩者之間的差別只在于是否有返回值的區(qū)別,實際上也確實只有這兩種區(qū)別
    2022-12-12
  • Android實現(xiàn)編程修改手機靜態(tài)IP的方法

    Android實現(xiàn)編程修改手機靜態(tài)IP的方法

    這篇文章主要介紹了Android實現(xiàn)編程修改手機靜態(tài)IP的方法,涉及Android編程實現(xiàn)對系統(tǒng)底層信息修改的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Android自定義View實現(xiàn)微信語音界面

    Android自定義View實現(xiàn)微信語音界面

    這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)微信語音界面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Android?手寫熱修復dex實例詳解

    Android?手寫熱修復dex實例詳解

    這篇文章主要為大家介紹了Android?手寫熱修復dex實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Android后臺定時提醒功能實現(xiàn)

    Android后臺定時提醒功能實現(xiàn)

    這篇文章主要介紹了Android后臺定時提醒功能,針對Service,AlarmManager的使用進行詳細闡述,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 一款非常簡單酷炫的LoadingView動畫效果

    一款非常簡單酷炫的LoadingView動畫效果

    這篇文章主要為大家詳細介紹了一款非常簡單酷炫的LoadingView動畫效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Android實現(xiàn)擴展Menu的方法

    Android實現(xiàn)擴展Menu的方法

    這篇文章主要介紹了Android實現(xiàn)擴展Menu的方法,涉及Android操作menu菜單的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Android錄音mp3格式實例詳解

    Android錄音mp3格式實例詳解

    本文講述了Android錄音成MP3格式實現(xiàn)思路概述,需要的朋友可以參考下
    2018-03-03

最新評論