android数据库SQLite操作
来源:互联网 发布:linux c 文件创建时间 编辑:程序博客网 时间:2024/04/30 14:38
定义一个实体类
package com.example.domain;public class Person { private Integer id; private String name; private String phone;public Integer getId() {return id;}public Person() {super();}public Person(Integer id, String name, String phone) {super();this.id = id;this.name = name;this.phone = phone;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;} }
数据库的创建
package com.example.service;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class DBopenHelper extends SQLiteOpenHelper { public DBopenHelper(Context context, String name, CursorFactory factory,int version) {/** * 指定要生成的数据库的名称,第二个参数为游标工厂可以使用android * 自带的直接写null, version 数据库版本号 要求不能为0 要大于0 */super(context, name, factory, version);}@Override //数据库每一次创建的时候调用public void onCreate(SQLiteDatabase db) {//创建表person db.execSQL("create table person(personid integer primary key autoincrement,name varchar(20))");}@Override//数据库版本号变更的时候被调用public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("alter table person add phone varchar(12) null");//增加电话号码列 且可为空 }}
service
package com.example.service;import java.util.ArrayList;import java.util.List;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import com.example.domain.Person;public class PersonService { private DBopenHelper dbopenHelper; public PersonService(DBopenHelper dbopenHelper) {super();this.dbopenHelper = dbopenHelper; } //添加记录public void save(Person person){ /** * 同一个对象调用getWritableDatabase具有缓存功能,比如在 * SQLiteDatabase db2=dbopenHelper.getWritableDatabase();此时 * db和db2是同一个对象 * 如果SQLiteDatabase db2=dbopenHelper1.getWritableDatabase(); * 则db和db2不是同一个对象 因为是不同的对象调用了getWritableDatabase方法 */SQLiteDatabase db=dbopenHelper.getWritableDatabase();db.execSQL("insert into person(name,phone)values(?,?)",new Object[]{person.getName(),person.getPhone()});db.close();}//删除记录public void delete(Integer id){SQLiteDatabase db=dbopenHelper.getWritableDatabase();db.execSQL("delete from person where personid=?", new Object[]{id});}//修改记录public void update(Person person){ SQLiteDatabase db=dbopenHelper.getWritableDatabase(); db.execSQL("update person set name=?,phone=? where personid=?", new Object[]{person.getName(),person.getPhone(),person.getId()});}/**dbopenHelper.getReadableDatabase()方法首先会调用getWritableDatabase() *方法 如果数据库的磁盘空间已经满了的话 就会调用只读方法,如果不满的话 会 *调用 getWritableDatabase方法。如果仅仅是用于读取数据库建议用getReadableDatabase() *方法 *///查询记录public Person find(Integer id){SQLiteDatabase db=dbopenHelper.getReadableDatabase();//Cursor对象可以对结果集进行随机访问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,name,phone); } db.close();return null ;}//分页获取记录public List<Person> getScrollData(int offsert,int maxResult){List<Person> persons=new ArrayList<Person>();SQLiteDatabase db=dbopenHelper.getReadableDatabase();Cursor cursor=db.rawQuery("select * from person order by personid asc limit ?,?", new String[]{String.valueOf(offsert),String.valueOf(maxResult)});while(cursor.moveToNext()){ int personid=cursor.getInt(cursor.getColumnIndex("personid")); String name=cursor.getString(cursor.getColumnIndex("name")); String phone=cursor.getString(cursor.getColumnIndex("phone")); persons.add(new Person(personid,name,phone));}cursor.close();return persons;}//获得总数记录public long getCount(){SQLiteDatabase db=dbopenHelper.getReadableDatabase();Cursor cursor=db.rawQuery("select count(*) from person",null ); cursor.moveToFirst(); long result=cursor.getLong(0); cursor.close(); return result;}}
SQLite事务方法
public void payment(){SQLiteDatabase db=dbopenHelper.getWritableDatabase();db.beginTransaction();//开启事任务try{db.execSQL("update person set amount=amount-10 where person=1");db.execSQL("update person set amount=amount+10 where person=2");db.setTransactionSuccessful();//设置事务的标志位true;}catch(Exception e){e.printStackTrace();}finally{//结束事务,有两种情况:commit,rollback,事务的提交或者回滚由事务//的标志决定的,如果事务的标志位true 事务就会提交,否则回滚默认情形事务的标志位falsedb.endTransaction();db.close();}}
- android sqlite数据库操作
- Android数据库操作--------SQLite
- android数据库SQLite操作
- android 数据库 sqlite 操作
- android SQLite数据库操作
- Android SQLite数据库操作
- Android SQLite数据库操作
- Android sqlite 数据库操作
- Android操作Sqlite数据库
- Android sqlite 数据库操作
- android操作sqlite数据库
- android sqlite 数据库操作
- Android-操作SQLite数据库
- android操作SQLite数据库
- android sqlite 操作数据库
- Android操作SQLite数据库
- Hello Android - SQLite数据库操作
- android数据库SQLite操作实例
- 不重复随机数列生成算法
- CGerberDoc* GetDocument() const; 错误
- GL入门
- Web服务器推送技术
- (Android) Eclipse "launching delegate" 停在 27%的解决方法
- android数据库SQLite操作
- 在解析文件时、图像处理、算法编码时速度慢的一个原因
- SQL视频总结
- HBase入门笔记(三)-- 完全分布模式Hadoop集群安装配置
- BNU 26476 Doorman【NC】
- C中的volatile用法
- HBase入门笔记(四)--完全分布式HBase集群安装配置
- hdu3018解题报告--也是白话几笔画学习总结
- Mtk Android 编译命令自定义--添加版本号