Android学习笔记--读写SQLite

步聚一:建一个继承了SQLiteOpenHelper的类,代码如下:

package com.example.sqliteoper.SQLiteDbHelper;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DbHelper extends SQLiteOpenHelper {
	private static final String tag="SQLiteOpenHelper";
	public DbHelper(Context context) {
		super(context, "mysqlite.db", null, 3);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		String sql="create table Person(personId integer primary key autoincrement,PersonName varchar(20))";
		db.execSQL(sql);
		db.close();
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		String esql="select count(*) from sqlite_master where tbl_name='Person' and type='table' and sql like '%PersonPhone%'";
		Cursor cursor=db.rawQuery(esql, null);
		cursor.moveToFirst();
		int cnt=cursor.getInt(0);
		if(cnt==0){
		String sql="alter table Person add PersonPhone varchar(20)";
		db.execSQL(sql);
		Log.i(tag, "修改了数据库结构");
		}
		db.close();
	}

}

步骤二:创建Model类

package com.example.sqliteoper.Model;

public class Person {
	private int PersonId;
	private String PersonName;
	private String PersonPhone;
	public int getPersonId() {
		return PersonId;
	}
	public Person() {}
	public Person(int personId, String personName, String personPhone) {
		PersonId = personId;
		PersonName = personName;
		PersonPhone = personPhone;
	}
	@Override
	public String toString() {
		return "Person [PersonId=" + PersonId + ", PersonName=" + PersonName
				+ ", PersonPhone=" + PersonPhone + "]";
	}
	public void setPersonId(int personId) {
		PersonId = personId;
	}
	public String getPersonName() {
		return PersonName;
	}
	public void setPersonName(String personName) {
		PersonName = personName;
	}
	public String getPersonPhone() {
		return PersonPhone;
	}
	public void setPersonPhone(String personPhone) {
		PersonPhone = personPhone;
	}
	public Person(String personName, String personPhone) {
		PersonName = personName;
		PersonPhone = personPhone;
	}
	
}

步骤三:创建db操作类,PersonServer是用的sql来操作的,个人感觉这种方式灵活性高,也可以用db自带的增删查改方法,如后面的OtherServer

package com.example.sqliteoper.Service;

import com.example.sqliteoper.Model.Person;
import com.example.sqliteoper.SQLiteDbHelper.DbHelper;

import java.util.*;
import android.content.*;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class PersonService {
	private Context context;
	
	public PersonService(Context context) {
		this.context = context;
	}

	public void Insert(Person p){
		DbHelper helper=new DbHelper(context);
		String sql="insert into Person (PersonName,PersonPhone) values (?,?)";
		SQLiteDatabase db=helper.getWritableDatabase();
		db.execSQL(sql, new Object[]{p.getPersonName(),p.getPersonPhone()});
		db.close();
	}
	
	public void Update(Person p){
		DbHelper helper=new DbHelper(context);
		String sql="update Person set PersonName=?,PersonPhone=? where PersonId=?";
		SQLiteDatabase db=helper.getWritableDatabase();
		db.execSQL(sql, new Object[]{p.getPersonName(),p.getPersonPhone(),p.getPersonId()});
		db.close();
	}
	
	public void Delete(int personId){
		DbHelper helper=new DbHelper(context);
		String sql="delete from  Person  where PersonId=?";
		SQLiteDatabase db=helper.getWritableDatabase();
		db.execSQL(sql, new Object[]{personId});
		db.close();
	}
	
	public Person GetPerson(int personId){
		DbHelper helper=new DbHelper(context);
		String sql="select * from  Person  where PersonId=?";
		SQLiteDatabase db=helper.getReadableDatabase();
		 Cursor cursor=db.rawQuery(sql, new String[]{String.valueOf(personId)});
		if(cursor.isFirst())
		{
			Person p=new Person();
			p.setPersonName(cursor.getString(cursor.getColumnIndex("PersonName")));
			p.setPersonPhone(cursor.getString(cursor.getColumnIndex("PersonPhone")));
			p.setPersonId(cursor.getInt(cursor.getColumnIndex("personId")));
			return p;
		}
		db.close();
		return null;
	}
	
	/*
	 * 取分页数据
	 * @param strWhere:筛选条件
	 * @param orderBy:排序方式,以order by 开头
	 * @param pageIndex:当前页码
	 * @param pageSize:每页记录数
	 */
	public List<Person> GetPersonList(String strWhere,String orderBy,int pageIndex,int pageSize){
		DbHelper helper=new DbHelper(context);
		int start=(pageIndex-1)*pageSize;
		String sql="select * from Person where 1=1 "+strWhere+orderBy+" limit ?,?";
		SQLiteDatabase db=helper.getReadableDatabase();
		Cursor cursor=db.rawQuery(sql, new String[]{String.valueOf(start),String.valueOf(pageSize)});
		List<Person> list=new ArrayList<Person>();
		while(cursor.moveToNext()){
			Person p=new Person();
			p.setPersonName(cursor.getString(cursor.getColumnIndex("PersonName")));
			p.setPersonPhone(cursor.getString(cursor.getColumnIndex("PersonPhone")));
			p.setPersonId(cursor.getInt(cursor.getColumnIndex("personId")));
			list.add(p);
		}
		db.close();
		return list;
	}
	
	public int GetRowCount(String strWhere)
	{
		DbHelper helper=new DbHelper(context);
		String sql="select count(*) from Person where 1=1 "+strWhere;
		SQLiteDatabase db=helper.getReadableDatabase();
		Cursor cursor=db.rawQuery(sql, null);
		cursor.moveToFirst();
		int cnt= cursor.getInt(0);
		db.close();
		return cnt;
	}
}

package com.example.sqliteoper.Service;
import java.util.*;

import com.example.sqliteoper.Model.Person;
import com.example.sqliteoper.SQLiteDbHelper.DbHelper;

import android.content.*;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class OtherService {
private Context context;
	
	public OtherService(Context context) {
		this.context = context;
	}

	public void Insert(Person p){
		DbHelper helper=new DbHelper(context);
		SQLiteDatabase db=helper.getWritableDatabase();
		ContentValues cvs=new ContentValues();
		cvs.put("PersonName", p.getPersonName());
		cvs.put("PersonPhone", p.getPersonPhone());
		db.insert("Person", null, cvs);
		db.close();
	}
	
	public void Update(Person p){
		DbHelper helper=new DbHelper(context);
		SQLiteDatabase db=helper.getWritableDatabase();
		ContentValues cvs=new ContentValues();
		cvs.put("PersonName", p.getPersonName());
		cvs.put("PersonPhone", p.getPersonPhone());
		db.update("Person", cvs, "PersonId=?", new String[]{String.valueOf(p.getPersonId())});
		db.close();
	}
	
	public void Delete(int personId){
		DbHelper helper=new DbHelper(context);
		SQLiteDatabase db=helper.getWritableDatabase();
		db.delete("Person","PersonId=?", new String[]{String.valueOf(personId)});
		db.close();
	}
	
	public Person GetPerson(int personId){
		DbHelper helper=new DbHelper(context);
		SQLiteDatabase db=helper.getReadableDatabase();
		 Cursor cursor=db.query("Person", null, "PersonId=?", new String[]{String.valueOf(personId)}, null, null, null);
		if(cursor.moveToFirst())
		{
			Person p=new Person();
			p.setPersonName(cursor.getString(cursor.getColumnIndex("PersonName")));
			p.setPersonPhone(cursor.getString(cursor.getColumnIndex("PersonPhone")));
			p.setPersonId(cursor.getInt(cursor.getColumnIndex("personId")));
			return p;
		}
		db.close();
		return null;
	}
	
	/*
	 * 取分页数据
	 * @param strWhere:筛选条件
	 * @param orderBy:排序方式,不要order by
	 * @param pageIndex:当前页码
	 * @param pageSize:每页记录数
	 */
	public List<Person> GetPersonList(String strWhere,String orderBy,int pageIndex,int pageSize){
		DbHelper helper=new DbHelper(context);
		int start=(pageIndex-1)*pageSize;
		SQLiteDatabase db=helper.getReadableDatabase();
		Cursor cursor=db.query("Person", null, strWhere, null,null , null, orderBy, start+","+pageSize);
		List<Person> list=new ArrayList<Person>();
		while(cursor.moveToNext()){
			Person p=new Person();
			p.setPersonName(cursor.getString(cursor.getColumnIndex("PersonName")));
			p.setPersonPhone(cursor.getString(cursor.getColumnIndex("PersonPhone")));
			p.setPersonId(cursor.getInt(cursor.getColumnIndex("personId")));
			list.add(p);
		}
		db.close();
		return list;
	}
	
	public int GetRowCount(String strWhere)
	{
		DbHelper helper=new DbHelper(context);
		SQLiteDatabase db=helper.getReadableDatabase();
		Cursor cursor=db.query("Person", new String[]{"count(*)"}, strWhere, null, null, null, null);
		cursor.moveToFirst();
		int cnt= cursor.getInt(0);
		db.close();
		return cnt;
	}
}

再后面就是测试和调用了,不再贴代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值