Android:数据存储之SQLite
Android在运行时集成了SQLite , 所以每个Android应用程序都可以使用SQLite数据库。
我们通过SQLiteDatabase这个类的对象操作SQLite数据库,而且不需要身份验证。
数据库存放的位置:data/data/<项目文件夹>/databases/,查看数据库>>
实例:
public class MainActivity extends Activity {
private Button createDatabase, createTable, selectData, insertData,
updateData, deleteDaata;
private MySQLiteOpenHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo);
// 初始化按钮
createDatabase = (Button) findViewById(R.id.createDatabase);
createTable = (Button) findViewById(R.id.createTable);
selectData = (Button) findViewById(R.id.selectData);
insertData = (Button) findViewById(R.id.insertData);
updateData = (Button) findViewById(R.id.updateData);
deleteDaata = (Button) findViewById(R.id.deleteDaata);
helper = new MySQLiteOpenHelper(MainActivity.this, "mydb.db",
null, 1);
/*
* 创建数据库
*/
createDatabase.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SQLiteDatabase sqlitedatabase = helper.getWritableDatabase();
Toast.makeText(MainActivity.this, "数据库创建成功", 1000).show();
}
});
/*
* 创建表
*/
createTable.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
SQLiteDatabase sqlitedatabase = helper.getWritableDatabase();
// 创建表
sqlitedatabase
.execSQL("create table student(id INTEGER PRIMARY KEY autoincrement,name text)");
Toast.makeText(MainActivity.this, "表创建成功", 1000).show();
}
});
/*
* 插入数据
*/
insertData.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
SQLiteDatabase sqlitedatabase = helper.getWritableDatabase();
sqlitedatabase
.execSQL("insert into student(name) values ('tinyphp')");
Toast.makeText(MainActivity.this, "插入数据成功", 1000).show();
}
});
/*
* 更新数据
*/
updateData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SQLiteDatabase sqlitedatabase = helper.getWritableDatabase();
sqlitedatabase
.execSQL("update student set name='monkey' where id='1'");
Toast.makeText(MainActivity.this, "数据更新成功", 1000).show();
}
});
/*
* 查询数据
*/
selectData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SQLiteDatabase sqlitedatabase = helper.getReadableDatabase();
//参数:表名、查询的列、查询条件、查询参数、查询结果分组、分组结果限制、排序
Cursor cursor = sqlitedatabase.query("student", new String[] {
"id", "name" }, "id=?", new String[] { "1" }, null,
null, null);
String name=null;
while(cursor.moveToNext()){
name =cursor.getString(cursor.getColumnIndex("name"));
}
Toast.makeText(MainActivity.this, "查询结果name为:"+name, 1000).show();
}
});
/*
* 删除数据
* */
deleteDaata.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SQLiteDatabase sqlitedatabase =helper.getWritableDatabase();
sqlitedatabase.delete("student", "id=?", new String[]{"1"});
Toast.makeText(MainActivity.this, "数据删除成功", 1000).show();
}
});
}
}
使用getWritableDatabase或getReadableDatabase的时候,数据库才会链接,通过execSQL执行SQL语句。