1.无数据类型(最好加上数据类型)
3.SELECT last_insert_rowid() 获得自增长后的id值
首先建表:
public class DBOpenHelpr extends sqliteOpenHelper {
public DBOpenHelpr(Context context) {//3.游标工厂,Null使用系统默认的游标 2.指定数据库名称 4.版本号
super(context,"itcast.db"1);
}//数据库第一次被创建的时候调用,sqliteDatabase 封装了数据库的所有操作@Override
public void onCreate(sqliteDatabase db) {//生成应用时要用的数据库表db.execsql("CREATE TABLE person(" +
"personid integer primary key autoincrement," "phone varchar(12)""name varchar(20)))");
//数据库文件版本号发生变更时要用onUpgrade(sqliteDatabase dboldVersonnewVerson) {//向数据库表中增加phone"ALTER TABLE person ADD phone varchar(12) null";}
新建Person类:
Person {private Integer id;String namephone
Integer getId() {return idsetId(Integer id) {this.id = idString getNamenamesetName(String name) {name = namegetPhonephonesetPhone(String phone) {phone = phonePerson(Integer idString nameString phone) {Person() {}
增删改查功能:
PersonService {private DBOpenHelpr dbOpenHelpr
PersonService(Context context) {dbOpenHelpr = new DBOpenHelpr(context)//增加数据public void save(Person person){sqliteDatabase db = dbOpenHelpr.getWritableDatabase();ContentValues contentValues = new ContentValues();contentValues.put("name","yanxi")"phone""12222"//2.NULL值字段
//共有下列两种方法增加数据db.insert("person",43); font-family:'Courier New'">contentValues);// db.execsql("insert into person(name,phone) " +// "values(?,?)",new Object[]{person.getName(),person.getPhone()});//在应用中只有一个地方使用数据库可以不用关数据库}
//删除数据
public void delete(Integer id){sqliteDatabase db = dbOpenHelpr.getWritableDatabase();db.delete("person","personid=?"String[]{id.toString()});
// db.execsql("delete from person where personid=?",new Object[]{id});}//修改数据public void update(Person person){sqliteDatabase db = dbOpenHelpr.getWritableDatabase();ContentValues contentValues = new ContentValues()contentValues.put("name",43); font-family:'Courier New'">person.getName())"phone"person.getPhone())db.update(contentValues"personid=?"String[]{person.getId().toString()})// db.execsql("update person set name=?,phone=? where personid=?",43); font-family:'Courier New'">// new Object[]{person.getName(),person.getPhone(),person.getId()});}//查询数据public Person find(Integer id){//dbOpenHelpr.getReadableDatabase()默认开始会调用dbOpenHelpr.getWritableDatabase(),//但是如果磁盘满了之后,就只会以只读的方式打开。sqliteDatabase db = dbOpenHelpr.getReadableDatabase();//2.字段列表部分Cursor cursor = db.query("person",43); font-family:'Courier New'; font-weight:bold">"personid=?"String[]{id.toString()});
// Cursor cursor = db.rawQuery("select * from person where personid=?",new String[]{id.toString()});if(cursor.moveToFirst()){int personid = cursor.getInt(cursor.getColumnIndex("personid"))String name = cursor.getString(cursor.getColumnIndex("name"String phone = cursor.getString(cursor.getColumnIndex("phone"return new Person(personid,43); font-family:'Courier New'">namephone)}cursor.close()return null;}//分页数据public List<Person> getScollData(int offsetmaxResult){List<Person> list = new ArrayList<>().getReadableDatabase()Cursor cursor = db.query("person""perrson asc"offset+","+maxResult);
//Cursor cursor = db.rawQuery("select * from person order by personid asc limit ?,?",// new String[]{String.valueOf(offset),String.valueOf(maxResult)});while(cursor.moveToNext()){personid = cursor.getInt(cursor.getColumnIndex("personid"))String name = cursor.getString(cursor.getColumnIndex("name"String phone = cursor.getString(cursor.getColumnIndex("phone"list.add(Person(personidnamephone))}cursor.close()return null;
//获得数据库表的记录数public long getCount(){sqliteDatabase db = dbOpenHelpr.getReadableDatabase();Cursor cursor =db.query(String[]{"count(*)"}// Cursor cursor = db.rawQuery("select count (*) form person",null);cursor.moveToFirst()long result = cursor.getLong(0)cursor.close()return result}}
测试类:
public class PersonServiceTest extends AndroidTestCase {
private static final String TAG = "PeraonServiceTAG";public void testCreateDB() throws Exception{DBOpenHelpr dbOpenHelpr = new DBOpenHelpr(getContext())//第一次调用该方法,创建数据库,默认目录:<包>databasedbOpenHelpr.getWritableDatabase()}
//增加数据测试类@TesttestSavePersonService p = PersonService(this.getContext())Person person = Person("yanxi",255); font-family:'Courier New'">"1777")p.save(person)//删除数据测试类testDeletep.delete(1//修改数据测试类testUpDatePerson person = p.find(person.setName("weimiao"p.update(person)//查找数据测试类testFindLog.i(TAGperson.toString())//分页数据测试类testScollDatap.getScollData(05//数据记录数测试类testCountlong i = p.getCount()String.valueOf(i))}