代码改变世界

android SQLite使用介绍

2011-11-30 22:39  javaspring  阅读(205)  评论(0编辑  收藏  举报

嵌入式关系型SQLite数据库与普通数据库的最大区别是:
嵌入式关系型SQLite数据库除了主键外,没有数据类型之分。即整型字段可以用来存放字符数据,反之字符串字段也可以用来存放整型值

SQLite使用方法步骤:


第一步:编写一个类并继承SQLiteOpenHelper;
该类我认为有两个作用:第一:用来取得操作sql语句的对象
					    第二:用来管理数据库的版本,可以进行相应的更新
简单的实例:
public class DBOpenHelperService extends SQLiteOpenHelper {
	
	private static final String DATABASENAME = "smuoj.db"; //数据库名称
	private static final int DATABASEVERSION = 1;//数据库版本


	public DBOpenHelperService(Context context) {
		super(context, DATABASENAME, null, DATABASEVERSION);
	}
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("CREATE TABLE _person (personid integer primary key autoincrement, name varchar(20), age integer)");//执行有更改的sql语句
	}
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		db.execSQL("DROP TABLE IF EXISTS _person");
		onCreate(db);
	}
}
第二步:根据要求编写相应的增删改查..的代码
注意:dbOpenHelperService.getWritableDatabase();通过这个函数可以取得操作数据库的对象
当调用这个方法时,如果数据库不存在,则会创建数据库,并执行Oncreate()方法
				   如果版本信息改变,则会执行onUpgrade()这个方法
如:编写保存 与 查找
public class DB {
	private  DBOpenHelperService dbOpenHelperService;
	private SQLiteDatabase db ;
	public DB(Context context) {
		dbOpenHelperService = new DBOpenHelperService(context);
		db  = dbOpenHelperService.getWritableDatabase();
	}
	public  void save(Person person){
		
		String sql = "insert into _person(name,age) values(?,?)";
		db.execSQL(sql,new Object[]{person.getName(),person.getAge()});
		db.close();
	}
	public List<Person> find(){
		List<Person> persons = new ArrayList<Person>();
		String sql = "select * from _person";
		Cursor cursor = db.rawQuery(sql,null);
		while(cursor.moveToNext()){
			Person person = new Person();
			person.setName(cursor.getString(cursor.getColumnIndex("name")));
			person.setAge(cursor.getInt(cursor.getColumnIndex("age")));
			persons.add(person);
		}
		return persons;
	}
}