数据库
1.无数据类型(最好加上数据类型)
2.SQLite可以解析大部分标准的SQL语句
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))} (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|