DbUtils在SQLite中的應用

why use DbUtils ?

DBUtils.PersistentDB 實現了強硬的、線程安全的、頑固的數據庫連接,使用DB-API 2模塊。DBUtils.PooledDB 實現了一個強硬的、線程安全的、有緩存的、可複用的數據庫連接。
DbUtils作用有三:
    1.丟一個SQL,給一個結果;
    2.把結果包裝成Bean、Map、List或Object[]形式;
    3.關閉Connection、Statement、ResultSet時候無需寫try catch,一行關閉。

DbUtils用在sql數據庫的查找

dbutils支持返回以下類型的結果:

  • ArrayHandler :將結果集中第一行的數據轉化成對象數組。返回值類型:–Object[]
  • ArrayListHandler將結果集中所有的數據轉化成List。返回值類型:List (Object[])
  • BeanHandler :將Object中第一行的數據轉化成類對象。返回值類型:T
  • BeanListHandler :將Object中所有的數據轉化成List,List中存放的是類對象。返回值類型:List
  • ColumnListHandler :將Object中某一列的數據存成List,List中存放的是 Object對象。返回值類型:List
  • KeyedHandler :將Object中存成映射,key爲某一列對應爲Map。Map中存放的是數據。Map<關鍵字字段值,map<列名,字段值>>返回值類型:
  • MapHandler :將結果集中第一行的數據存成Map<列名,字段值>映射。返回值類型:Map(String,Object)
  • MapListHandler :將結果集中所有的數據存成List。List中存放的是Map<列名,字段值>。
  • ScalarHandler :返回結果集中的第一行的指定列的一個值。返回值類型:Object

案例

1.在MySQliteOpenHelpter類中新建庫

public class MySQliteOpenHelpter extends SQLiteOpenHelper {
    public MySQliteOpenHelpter(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
    public MySQliteOpenHelpter(Context context, String name){
        this(context,name,null,1);//創建數據庫
    }
                               @Override
    public void onCreate(SQLiteDatabase db) {
      db.execSQL("create table if not exists student(id integer primary key autoincrement,name varchar(20),password varchar(20))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

2、Student類,包含屬性和方法

@Table(name="student")//注意要導入xUtils包
public class Student {
    @Column(column="id")
    private  String id;
    private  String name;
    private String password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

3、activity中

public class MainActivity extends Activity implements View.OnClickListener {

……

 MySQliteOpenHelpter helpter = new MySQliteOpenHelpter(getApplicationContext(), "MY_FIRST_DB.db");//DB的名字
 ……
//通常的查詢方法

Cursor cursor=database.rawQuery("select * from student", null);
                cursor.moveToFirst();
                while(!cursor.isAfterLast()){
                    String name=cursor.getString(cursor.getColumnIndex("name"));
                    String password = cursor.getString(cursor.getColumnIndex("password"));
                    Log.d("cursor","用戶名"+name+" 密碼 "+password);
                    Toast.makeText(MainActivity.this,"用戶名"+name+"密碼 "+password, Toast.LENGTH_SHORT).show();
                    cursor.moveToNext();
                } 
//使用DbUtils查詢
 DbUtils dbUtils = DbUtils.create(this,"MY_FIRST_DB.db");//只需要對應庫的名字即可
        try {
            List<Student> students = dbUtils.findAll(Selector.from(Student.class));//結果包裝成list的形式
            for(Student student:students){
                Log.d("cursor","用戶名 "+student.getName()+"  密碼"+student.getPassword());
            }
        } catch (DbException e) {
            e.printStackTrace();
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章