安卓数据库知识的小结
数据库是五中存储方式之一. 五中存储方式为
- 文件存储
- 网络存储
- shapePrefrenced存储
- SQLite存储
- contentProvider存储
安卓采取的存储方式
1.SQLite存储方式
2.shapePrefrenced存储方式
此处我们先讲解Android SQLite的存储方式
通过列子我们来熟悉SQLite的基本使用方式
//主Activity里面的代码如下
public class MainActivitySql extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_sql);
initView();
}
/***************************
* 初始化函数
*/
private void initView(){
StudentDBDao data = new StudentDBDao(this);
data.insert("美人鱼", "6亿$", "环保");
data.insert("蝙蝠侠之黑暗崛起", "12亿$", "小丑的经典战役");
data.insert("教父1", "15亿$", "经典的教父");
data.insert("教父2", "12亿$", "经典中再创经典");
data.insert("教父3", "18亿$", "经典中的衰落");
}
}
//这个类主要是创建数据库表单和管理数据库
public class StudentOpenHelper extends SQLiteOpenHelper {
/**
* 创建另一个数据库的时候使用
* @param context 参数1--上下文
* @param name 参数2-要创建的数据库名字
* @param factory 参数3-游标工厂 通常在创建数据库的时候赋值为null
* @param version 参数4-代表创建按数据库时候的版本号
*/
public StudentOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
/********************************
* 创建表格的方法 数据库表格创建的地方
*/
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String createTable = "create table student"
+ " (id integer primary key autoincrement,"
+ "name varchr(10), "
+ "num varchr(2),"
+ " hobby varchr(50))";
//使用数据库对象db调用执行sql语句,来创建一个表格
db.execSQL(createTable);
Log.i("onCreate", "======onCreate========");
}
/**
* 数据库版本号增加的时候调用
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.i("onUpgrade", "======onUpgrade========");
String createTable = "create table teacher"
+ " (id integer primary key autoincrement,"
+ "name varchr(10), "
+ "num varchr(2),"
+ " hobby varchr(50))";
db.execSQL(createTable);
}
/**
* 第一次创建数据库的时候使用
* @param context
*/
public StudentOpenHelper(Context context) {
super(context, "movie.db", null, 1);
// TODO Auto-generated constructor stub
}
/**
* 更新数据库的时候使用
* @param context
*/
public StudentOpenHelper(Context context,int version) {
super(context, "student.db", null, version);
// TODO Auto-generated constructor stub
}
}
//把增删改查的方法全部封装在这里,主Activity里面可以new这个类的对象,直接调用这里面的方法,简化主函数,防止主函数的臃肿
public class StudentDBDao {
StudentOpenHelper helper;
SQLiteDatabase database;
public StudentDBDao(Context context) {
super();
this.helper = new StudentOpenHelper(context);
}
/*****************************
* 插入数据
* @param name
* @param num
* @param hobby
****************************/
public void insert(String name,String num,String hobby){
printlLog("insert","启动成功:"+"insert");
database=helper.getWritableDatabase();
//类似Map集合的ContentValues类
ContentValues contentValues = new ContentValues();
//put方法中键值要与数据库表中的字段值一致
contentValues.put("name", name);
contentValues.put("num", num);
contentValues.put("hobby", hobby);
database.insert("student", null, contentValues);
database.close();
}
/*********************
* 谷歌Api实现的删除方法
* @param num
*********************/
public void delete(String num){
printlLog("delete","启动成功:"+"delete");
database=helper.getWritableDatabase();
database.delete("student", "num = ?", new String[]{num});
database.close();
}
/*********************************************************
* 通过谷歌API实现更新数据库的方法
* @param num
*********************************************************/
public void update(String hobby,String num){
printlLog("update","启动成功:"+"update");
database=helper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("hobby", hobby);
database.update("student", contentValues,"num = ?", new String[]{num});
database.close();
}
/****************************************************************************
* 通过谷歌API实现查询的方法
* @param num
* @return
* (String table, String[] columns, String selection, String[] selectionArgs,
* String groupBy, String having, String orderBy)
* columns代表查询的列表,赋值为null为查询所有类,查询指定列名就传列名
* 参数5,6,7是一些条件排序分组的属性,传为null就可以
****************************************************************************/
public int select(String num){
printlLog("select","启动成功:"+"select");
database=helper.getReadableDatabase();
Cursor cursor = database.query("student", null, "num = ?",
new String[]{num}, null, null, null);
return cursor.getCount();
}
/*****************************************************************************
* 打印日志信息的方法
* @param tag
* @param msg
*****************************************************************************/
public void printlLog(String tag,String msg){
Log.i(tag, msg);
}
}