android之数据库的使用案例

Android中采用的数据库是一个轻量级的数据库SQLite,在使用这个数据库时不用再导包,

,使用SQLite数据库时,首先要继承SQLiteOpenHelper,SQLiteOpenHelper是一个用于数据库的创建和管理的类,子类通过实现onCrate来实现数据库的创建,通过实现onUpGrade来实现数据库版本的控制。

 

通过下面具体代码来了解一下如何创建一个数据库:

public classMyDBOpenHelper extends SQLiteOpenHelper{

     //这是构造方法,通过构造方法可以创建一个名为hello.db的数据库

//构造函数可以只传一个代表上下文的Context变量,也可以传入数据库名称,游//标工厂,数据库版本号。当然,后面这三个参数也可以通过调用父类的构造函数//时传入。第三个参数传入null时,默认使用默认的游标工厂。

    public MyDBOpenHelper(Contextcontext) {

       super(context, "hello.db",null,1);

      

    }

 

//数据库第一次创建时调用,在这里面可以在数据库名为hello.db下创建一张表。

  @Override

    public void onCreate(SQLiteDatabasedb) {

       System.out.println("数据库创建");

      

       db.execSQL("create table person (id INTEGER primary keyautoincrement,name varchar(20),balance varchar(20))");

      

      

    }

 

//onUpGrade是通过检查数据库版本是否改变,如果改变了则执行该方法,否则不执行

    @Override

    public voidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

       // TODO Auto-generated method stub

      

    }

 

}

 

 

通过实例化MyDBOpenHelper类可以对已经创建的数据库进行增删改查。

public classClassicPersonDAO {

 

    Contextcontext;

    MyDBOpenHelperdb;

 

    publicClassicPersonDAO(Context context) {

       this.context = context;

       db = newMyDBOpenHelper(context); // 创建dbopenHelper

    }

 

    // 插入

 

    public void insert(Person p) {

// 获得一个可写的数据库

SQLiteDatabasedataBase = db.getWritableDatabase(); 

// 向数据库中插入一条数据

 

    dataBase.execSQL("insert into person (name,balance)values(?,?)",

              new Object[] { p.getName(),p.getBalance() });

       dataBase.close();// 将数据库关闭

 

    }

 

    // 删除一条数据

 

    public void delete(int id) {

       SQLiteDatabasedatabase = db.getWritableDatabase();

 

database.execSQL("delete from person where id=?", newObject[] { id+ "" });

 

       database.close();

 

    }

 

    // 更新数据库中的某条记录

    public void update(Person p) {

 

       SQLiteDatabasedata = db.getWritableDatabase();

       data.execSQL("update person set name=?,balance=? where id=?",

              new Object[] { p.getName(),p.getBalance(), p.getId() });

 

       data.close();

 

    }

 

    // 根据id查询数据

    public Person query(int i) {

 

       SQLiteDatabasedata = db.getReadableDatabase();

 

       Cursorc = data.rawQuery("select * from person whereid=?",

              new String[] { i + "" });

       Personp = newPerson();

       while (c.moveToNext()) {

           Integerid = c.getInt(c.getColumnIndex("id"));

           Stringname = c.getString(c.getColumnIndex("name"));

           Stringbalance = c.getString(c.getColumnIndex("balance"));

 

           p.setId(id);

           p.setName(name);

           p.setBalance(balance);

       }

       db.close();

       return p;

 

    }

 

    // 查询全部

    public List<Person>queryAll() {

 

       SQLiteDatabasedata = db.getReadableDatabase();

       Cursorc = data.rawQuery("select * from person", null);

       List<Person>list = newArrayList<Person>();

       while (c.moveToNext()) {

           Integerid = c.getInt(c.getColumnIndex("id"));

           Stringname = c.getString(c.getColumnIndex("name"));

           Stringbalance = c.getString(c.getColumnIndex("balance"));

           Personp = newPerson();

           p.setId(id);

           p.setName(name);

           p.setBalance(balance);

           list.add(p);

 

       }

 

       return list;

    }

 

    // 分页查询

    public List<Person>queryPage() {

 

       SQLiteDatabasedata = db.getReadableDatabase();

       Cursorc = data.rawQuery("select * from person limit20,30", null);

       List<Person>list = newArrayList<Person>();

       while (c.moveToNext()) {

           Integerid = c.getInt(c.getColumnIndex("id"));

           Stringname = c.getString(c.getColumnIndex("name"));

           Stringbalance = c.getString(c.getColumnIndex("balance"));

           Personp = newPerson();

           p.setId(id);

           p.setName(name);

           p.setBalance(balance);

           list.add(p);

 

       }

 

       return list;

    }

 

}

 

猜你喜欢

转载自haiyang08101.iteye.com/blog/2012062