android数据库操作

一、首先新建Adnroid项目 然后就是新建 数据库文件

创建DBSQLiteOpenHelper类 并让它继承 SQLiteOpenHelper

public class DBSQLiteOpenHelper extends SQLiteOpenHelper {  
  
    // 数据库的名称  
    private static final String name = "CSDN";  
  
    // 数据库的版本  
    private static final int version = 2;  
  
    public DBSQLiteOpenHelper(Context context) {  
        super(context, name, null, version);  
  
        Log.v("DBSQLiteOpenHelper", "构造器.....");  
    }  
  
    // 当数据 库第一次创建的时候 执行的方法  
    @Override  
    public void onCreate(SQLiteDatabase db) {  
        // execSQL来挨靠 sql语句  
        db.execSQL("create table person(personid integer primary key autoincrement,name varchar(20),age integer)");  
  
        Log.v("DBSQLiteOpenHelper", "onCreate...创建执行第一次。");  
    }  
  
    // 当版本发生变化则执行此方法  
    @Override  
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  
        db.execSQL("alter table person add account integer");  
  
        Log.v("DBSQLiteOpenHelper", "每次更新时都执行.....");  
    }  
  
} 

------接下来就是对数据库进行操作了----------------------------------------------------------------------

新建 domain包 中Person 类 其中字段如下:

public class Person {
 
 private Integer id;
 private String name;
 private Integer age;
 private Integer account;

生成 空构造器,带参数的构造器,和set/get 方法

为了方便测试 生成String

接下来就是实现PersonDao接口和PersonDaoImpl类了。----------------------------------------------------------------------

public interface PersonDao {  
      
    /** 
     * 插入数据操作 
     * @param db 
     * @param entity 
     */  
    public void insert(SQLiteDatabase db,Person entity);  
      
    /** 
     * 更新操作 
     * @param db 
     * @param entity 
     */  
    public void update(SQLiteDatabase db,Person entity);  
      
    /** 
     * 删除操作 
     * @param db 
     * @param id 
     */  
    public void delete(SQLiteDatabase db,Integer id);  
      
    //查找所有  
    public List<Person> findAll(SQLiteDatabase db);  
      
    //获取当前页信息  
    public List<Person> getNowPageInfo(SQLiteDatabase db,int nowpage,int pagesize);  
  
    //根据ID查询  
    public Person findById(SQLiteDatabase db,Integer id);  
}  
public class PersonDaoImpl implements PersonDao {  
  
    @Override  
    public void insert(SQLiteDatabase db, Person entity) {  
        if (db.isOpen()) {  
            db.execSQL(  
                    "insert into person(name,age,account) values(?,?,?)",  
                    new Object[] { entity.getName(), entity.getAge(),  
                            entity.getAccount() });  
            db.close();  
        }  
  
    }  
  
    @Override  
    public void update(SQLiteDatabase db, Person entity) {  
        if (db.isOpen()) {  
            db.execSQL(  
                    "update person set name=?,age=?,account=? where personid=?",  
                    new Object[] { entity.getName(), entity.getAge(),  
                            entity.getAccount(), entity.getId() });  
            db.close();  
        }  
  
    }  
  
    @Override  
    public void delete(SQLiteDatabase db, Integer id) {  
        if (db.isOpen()) {  
            db.execSQL("delete from person where personid=?",  
                    new Object[] { id });  
            db.close();  
  
        }  
    }  
  
    public List<Person> findAll(SQLiteDatabase db) {  
        List<Person> persons = new ArrayList<Person>();  
        if (db.isOpen()) {  
            Cursor cursor = db.rawQuery(  
                    "select personid,name,age,account from person", null);  
  
            // 判断 是否含有下一个  
            while (cursor.moveToNext()) {  
                // 创建 person对象  
                Person person = new Person();  
  
                // 为对象 的属性赋值  
                person.setId(cursor.getInt(0));  
                person.setName(cursor.getString(1));  
                person.setAge(cursor.getInt(2));  
                person.setAccount(cursor.getInt(3));  
  
                // 添加到集合中  
                persons.add(person);  
            }  
  
        }  
  
        return persons;  
  
    }  
  
    @Override  
    public List<Person> getNowPageInfo(SQLiteDatabase db, int nowpage,  
            int pagesize) {  
  
        // 开始记录  
        int start = (nowpage - 1) * pagesize;  
  
        List<Person> persons = new ArrayList<Person>();  
        if (db.isOpen()) {  
            Cursor cursor = db.rawQuery(  
                    "select personid,name,age,account from person limit ?,?",  
                    new String[] { start + "", pagesize + "" });  
  
            // 判断 是否含有下一个  
            while (cursor.moveToNext()) {  
                // 创建 person对象  
                Person person = new Person();  
  
                // 为对象 的属性赋值  
                person.setId(cursor.getInt(0));  
                person.setName(cursor.getString(1));  
                person.setAge(cursor.getInt(2));  
                person.setAccount(cursor.getInt(3));  
  
                // 添加到集合中  
                persons.add(person);  
            }  
  
        }  
  
        return persons;  
    }  
  
    @Override  
    public Person findById(SQLiteDatabase db, Integer id) {  
        Person person =null;  
        if (db.isOpen()) {  
            // 查询  
            Cursor cursor = db.rawQuery("select personid,name,age,account from person where personid = ?", new String[]{""+id});  
            // 判断是否含有下一个  
            if (cursor.moveToNext()) {  
                person = new Person();  
                // 创建person对象  
                // 为对象的属性赋值  
                person.setId(cursor.getInt(0));  
                person.setName(cursor.getString(1));  
                person.setAge(cursor.getInt(2));  
                person.setAccount(cursor.getInt(3));  
  
            }  
        }  
  
        return person;  
    }  
  
}  

------------------------功能写好后,接下来就是对此方法 进行测试 了-----------------------------------------------------

第一步:首先在AndroidManifest.xml中加入下面红色代码:
<instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.example.lession05_db" >
    </instrumentation>
<uses-library android:name="android.test.runner" />
 
第二步:就是写测试方法DBTest 继承AndroidTestCase
public class DBTest extends AndroidTestCase {  
  
    PersonDao personDao = new PersonDaoImpl();  
  
    public void createDB() {  
        DBSQLiteOpenHelper db = new DBSQLiteOpenHelper(this.getContext());  
        SQLiteDatabase sdb = db.getWritableDatabase();  
    }  
  
    public void insert() {  
        DBSQLiteOpenHelper db = new DBSQLiteOpenHelper(this.getContext());  
          
        for(int i=1;i<=10;i++){  
        SQLiteDatabase sdb = db.getWritableDatabase();  
        Person entity = new Person(null, "chrp"+i, 23+i, 1000+i);  
        personDao.insert(sdb, entity);  
        }  
    }  
  
      
    public void update() {  
        DBSQLiteOpenHelper db = new DBSQLiteOpenHelper(this.getContext());  
  
        SQLiteDatabase sdb = db.getWritableDatabase();  
        Person entity = new Person(2, "chrp99", 33, 11000);  
        personDao.update(sdb, entity);  
    }  
      
    public void delete() {  
        DBSQLiteOpenHelper db = new DBSQLiteOpenHelper(this.getContext());  
  
        SQLiteDatabase sdb = db.getWritableDatabase();  
          
        personDao.delete(sdb,11 );  
    }  
      
    public void getNowPageInfo(){  
        DBSQLiteOpenHelper db = new DBSQLiteOpenHelper(this.getContext());  
  
        SQLiteDatabase sdb = db.getWritableDatabase();  
          
        List<Person> persons = personDao.getNowPageInfo(sdb, 1, 5);  
          
        for(Person p:persons){  
            System.out.println(p.toString());  
        }  
    }  
      
    public void findAll(){  
        //创建数据库的管理的对象  
        DBSQLiteOpenHelper db = new DBSQLiteOpenHelper(this.getContext());  
        //获取 SqLiteDatebase实例对象 才能创建数据库  
        SQLiteDatabase sdb = db.getWritableDatabase();  
          
        List<Person> persons = personDao.findAll(sdb);  
          
        for(Person p:persons){  
            System.out.println(p.toString());  
        }  
    }  
      
    public void findById(){  
        //创建数据库的管理的对象  
        DBSQLiteOpenHelper db = new DBSQLiteOpenHelper(this.getContext());  
        //获取 SqLiteDatebase实例对象 才能创建数据库  
        SQLiteDatabase sdb = db.getWritableDatabase();  
          
        Person p = personDao.findById(sdb, 3);  
          
        if(p!=null){  
            System.out.println(p.toString());  
        }  
    }  
      
  
}