日期:2014-05-16 浏览次数:20919 次
操作sqlite数据库第一种方法execSql()? rawQuery () 第二种方法:insert() delete() update()? query()
/**
* 通过继承SqliteOpenHelper来创建一个数据库
* @author Administrator
*
*/
public class DbOpenhelper extends SQLiteOpenHelper
{
private static String DATABASENAME = "secn.db";
private static int DATABASEVERSION = 2;
/**
* (Context context, String name, CursorFactory factory,int version)
* @param context 上下文对象
* @param name 数据库名称 secb.db
* @param factory 游标工厂
* @param version 数据库版本
*/
public DbOpenhelper(Context context)
{
super(context, DATABASENAME, null, DATABASEVERSION);
}
/**数据库第一次被使用时创建数据库
* @param db 操作数据库的
*/
public void onCreate(SQLiteDatabase db)
{
//执行有更新行为的sql语句
db.execSQL("CREATE Table person (personid integer primary key autoincrement, name varchar(20), amount integer,age integer)");
}
/**数据库版本发生改变时才会被调用,数据库在升级时才会被调用;
* @param db 操作数据库
* @param oldVersion 旧版本
* @param newVersion 新版本
*/
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("drop table if exists person");
onCreate(db);
}
}
?
?
?
/**
* 对Person对象的sql操作(增删改查)
*
* @author Administrator
*
*/
public class PersonService
{
private DbOpenhelper dbOpenHelper;
public PersonService(Context context)
{
dbOpenHelper = new DbOpenhelper(context);
}
/**
* 添加Person
*
* @param person
*/
public void addPerson(Person person)
{
// 对读和写操作的方法
// 如果当我们二次调用这个数据库方法,他们调用的是同一个数据库对象,在这里的方法创建的数据调用对象是用的同一个对象
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
db.execSQL("insert into Person(name,amount) values(?,?)", new Object[]
{ person.getName(), person.getAmount() });
}
/**
* 修改Person
*
* @param person
*/
public void modifyPerson(Person person)
{
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
db.execSQL("update Person set name=? where personid=?", new Object[]
{ person.getName(), person.getId() });
}
/**
* 删除Person
*
* @param person
*/
public void deletePerson(Integer id)
{
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
db.execSQL("delete from Person where personid=?", new Object[]
{ id.toString() });
}
/**
* 根据person的Id查询Person对象
*
* @param id
* Person的ID
* @return Person
*/
public Person findPerson(Integer id)
{
// 只对读的操作的方法
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
// Cursor游标的位置,默认是0,所有在操作时一定要先cursor.moveToFirst()一下,定位到第一条记录
// Cursor cursor =
// db.rawQuery("select * from person Where personid=?",new
// String[]{id.toString()});
Cursor cursor = db.query("Person", new String[]
{ "personid", "name", "amount" }, "personid=?", new String[]
{ id.toString() }, null, null, null);
if (cursor.moveToFirst())
{
int personId = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int amount = cursor.getInt(cursor.getColumnIndex("amount"));
return new Person(personId, name, amount);
}
return null;
}
/**
* 返回Person对象的集合
*
* @return List<Person>
*/
public List<Person> findPersonList(Integer start, Integer length)
{
List<Person> persons = new ArrayList<Person>();
// 只对读的操作的方法
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from Person limit ?,?",
new String[]
{ start.toString(), length.toString() });
cursor = db.query("Person", null, null, null, null, null, null, start
+ "," + length);
while (cursor.moveToNext())
{
int personId = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int amount = cursor.getInt(cursor.getColumnIndex("amount"));
persons.add(new Person(personId, name, amount));
}
return persons;
}
/**
* 返回Person的记录总个数
*
* @return
*/
public Long g