您的位置:首页 > 移动开发 > Android开发

Android 数据存储(三)之数据库存储

2016-06-23 11:07 417 查看
Android内部有自己的数据库,Android也为我们提供了一个操作数据库的辅助类-SQLiteOpenHelper。使用这个类可以完成数据库的创建和升级。

1.创建数据库

在创建数据库之前,先自己定义一个类,继承SQLiteOpenHelper,用于程序中操作数据库。代码如下:

public class DbHelper extends SQLiteOpenHelper {

private static final String CREATE_PERSON_TABLE = "create table tb_person ("
+ "id integer primary key autoincrement, "
+ "name varchar(16), "
+ "info text)";
private Context mContext;

public DbHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
mContext = context;
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(CREATE_PERSON_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}

}


在主Activity的onCreate中添加函数createDB来创建数据库:

private void createDB() {
// TODO Auto-generated method stub
mDbHelper = new DbHelper(this, "person.db", null, 1);
mDbHelper.getWritableDatabase();
}


点击运行程序,验证数据库是否已经生成,这要借助Android自带的一个工具-sqlite3.exe。它在sdk\platform-tools目录下。在cmd窗口中进入该目录。执行sqlite3 person.db;就可以进入数据库了,执行.table可以查看数据库里面的表。

2.插入数据

添加插入按钮和事件响应。

Button insert = (Button) findViewById(R.id.insert);
insert.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SQLiteDatabase db = mDbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "malion");
values.put("info", "i am a ma nong!!!");
db.insert("tb_person", null, values);
}
});


运行程序,点击按钮之后,在cmd窗口执行select * from tb_person;就可以看到我们输入的数据了。

3.更新数据

添加更新按钮和事件响应。

Button update = (Button) findViewById(R.id.update);
update.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SQLiteDatabase db = mDbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("info", "i am a malion!!!");
db.update("tb_person", values, "name = ?",
new String[] { "malion" });
}
});


运行程序,点击按钮之后,在cmd窗口执行select * from tb_person;就可以看到我们更新的数据了。

4.删除数据

添加删除按钮和事件响应。

Button delete = (Button) findViewById(R.id.delete);
delete.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SQLiteDatabase db = mDbHelper.getWritableDatabase();
db.delete("tb_person", "name = ?", new String[] { "malion" });
}
});


运行程序,点击按钮之后,在cmd窗口执行select * from tb_person;就可以看到我们删除的数据了。

5.查找数据

添加删除按钮和事件响应。

Button select = (Button) findViewById(R.id.select);
select.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SQLiteDatabase db = mDbHelper.getWritableDatabase();
Cursor cursor = db.query("tb_person", null, null, null, null,
null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
String name = cursor.getString(cursor
.getColumnIndex("name"));
String info = cursor.getString(cursor

4000
.getColumnIndex("info"));
Log.i("info", "name: " + name + "info: " + info);
}
cursor.close();
}
}
});


运行程序,点击按钮之后,查看Logcat:



6.数据库更新

先要对数据库的版本进行更新,在创建的时候最后一个参数就是数据库的版本,现在设置为2.

private void createDB() {
// TODO Auto-generated method stub
mDbHelper = new DbHelper(this, "person.db", null, 2);
mDbHelper.getWritableDatabase();
}


然后在DbHelper的onUpgrade中添加数据库更新要进行的操作。

private static final String CREATE_USER_TABLE = "create table tb_user ("
+ "id integer primary key autoincrement, " + "name varchar(16), "
+ "info text)";

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
if (newVersion > oldVersion) {
switch (oldVersion) {
case 1:
db.execSQL(CREATE_USER_TABLE);
default:
break;
}
}
}


运行程序,点击按钮之后,在cmd窗口执行.table;就可以看到新建的表了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 android