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 students = dbUtils.findAll(Selector.from(Student.class));//结果包装成list的形式
            for(Student student:students){
                Log.d("cursor","用户名 "+student.getName()+"  密码"+student.getPassword());
            }
        } catch (DbException e) {
            e.printStackTrace();
        }

你可能感兴趣的:(数据库)