SQLite是Android自带的一个轻量级数据库。下面来学习如何使用它
首先需要自定义一个类来继承SQLiteOpenHelper 这个抽象类。
需要实现里面的两个方法onCreate() 和 onUpgrade()
public class DBOpenhelper extends SQLiteOpenHelper {
public DBOpenhelper(Context context) {
/* 默认的有四个参数的构造函数,我们只需要一个Context对象就行了
第二个参数为数据库的名字,第三个参数默认null,最后一个参数是版本号*/
super(context, "test.db", null, 2);
}
//**onCreate()** 方法在数据库第一次被创建时调用
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table flag(id integer primary key ,comment varchar(20))");
db.execSQL("insert into flag(comment) values ('tetettete')");
db.execSQL("insert into flag(comment) values ('qqqqqqqqq')");
db.execSQL("insert into flag(comment) values ('aaaaaaaaaaa')");
}
/* onUpgrade()方法在每次发现数据库版本号更新时被调用*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
接下来我们创建一个实体类Flag.java
public class Flag {
int id;
String comment;
public Flag(int id,String comment) {
this.id=id;
this.comment=comment;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
}
下面我们通过FlagDAO.java这个类来封装有一些常用的操作
public class FlagDAO {
private DBOpenhelper helper;
private SQLiteDatabase db;
public FlagDAO(Context c) {
helper=new DBOpenhelper(c);
db=helper.getWritableDatabase();
}
void insert(Flag flag){
db.execSQL("insert into flag(comment) values('?')",new Object[]{flag.getComment()});
}
ArrayList<Flag> findAll(){
ArrayList<Flag> flag=new ArrayList<Flag>();
Cursor cursor= db.rawQuery("select * from flag", null);
while (cursor.moveToNext()){
flag.add(new Flag(cursor.getInt(0), cursor.getString(1)));
}
return flag;
}
}
在MainActivity中 进行测试。 将数据库里面的数据展示在TextView控件上。
public class MainActivity extends Activity {
private TextView tv_show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_show=(TextView) findViewById(R.id.tv_show);
FlagDAO dao=new FlagDAO(this);//创建数据库
String data="";
ArrayList<Flag> flags=new ArrayList<Flag>();
flags=dao.findAll();//获取到查询的数据
for (int i = 0; i < flags.size(); i++) {
Flag flag=flags.get(i);
data=data+flag.id+flag.comment;
}
tv_show.setText(data);
}
}