在安卓程序中需要在网络中保存一些比较复杂的文件,比如qq的聊天记录,用SP设计又太麻烦了,但是如果使用SQLife进行数据存储就十分方便
SQLife是一种轻型的数据库,是遵守ACID(增删改查)的关系型数据库管理系统
首先新建一个类继承SQLiteOpenHelper实现它的几个方法
onCreate()创建
onUpgrade()修改
还有改造参数
表的建立规则为
crate table 表明称{
Id integer(int类型为Integer类型储存) primary(主键) key autoincrement(自动增长) not null(不为空),
name text(文本类型),
price real(浮点类型),
}
在代码中是这样实现的:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sql);
}
String sql="create table student(" +
"id integer primary key autoincrement not null," +
"name text," +
"height real" +
")";
先从EditView得到要添加的数据
String name =main5_name.getText().toString();
int age=Integer.parseInt(main5_psd.getText().toString());
ContentValues values=new ContentValues();
values.put("name",name);
values.put("age",age);
MySQliftHelper mySQliftHelper=new MySQliftHelper(this,"student_et",null,1);
/*第一个参数上下文环境
*第二个参数数据库名
*第三给参数游标
*第四个参数是SQLife的版本号
*/
SQLiteDatabase sqLiteDatabase=mySQliftHelper.getWritableDatabase();
sqLiteDatabase.insert("student",null,values);
/*第一个参数表名
*第二个参数游标
*第三给参数ContentValues 类型,通过ContentValues 添加数据
*/
从EditView 中得到姓名,根据姓名删除数据
String name=main5_name.getText().toString();
MySQliftHelper mySQliftHelper=new MySQliftHelper(this,"student_et",null,1);
SQLiteDatabase sqLiteDatabase=mySQliftHelper.getWritableDatabase();
//调用.delete方法删除数据
sqLiteDatabase.delete("student","name=? and age=?",new String[]{name,age});
/*第一个参数表名
*第二个参数是列名"列名=?"
*第三给参数是String数组,new String[]{要查找的值}
/
从EditView 中得到姓名和年龄,根据姓名和年龄删除数据
String name=main5_name.getText().toString();
String age=main5_age.getText().toString();
MySQliftHelper mySQliftHelper=new MySQliftHelper(this,"student_et",null,1);
SQLiteDatabase sqLiteDatabase=mySQliftHelper.getWritableDatabase();
sqLiteDatabase.delete("student","name=? and age=?",new String[]{name,age});
/*第一个参数表名
*第二个参数是列名"列名=? and 第二个列名"
*第三给参数是String数组,new String[]{要查找的姓名,要查找的年龄}
/
如果要清空全部
sqLiteDatabase.delete("student",null,null);
就行了
修改和删除差不多
String name=main5_name.getText().toString();
String age=main5_psd.getText().toString();
MySQliftHelper mySQliftHelper=new MySQliftHelper(this,"student_et",null,1);
SQLiteDatabase sqLiteDatabase=mySQliftHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("name","sb");
//调用.update修改数据
sqLiteDatabase.update("student",values,"name=? and age=?",new String[]{name,age});
//第二个参数是ContentValues并且通过它修改数据
这里我写了最简单的从控制台输出
studentList.clear();
MySQliftHelper mySQliftHelper=new MySQliftHelper(this,"student_et",null,1);
SQLiteDatabase sqLiteDatabase=mySQliftHelper.getWritableDatabase();
//设置游标打印数据
Cursor cursor=sqLiteDatabase.query("student",null,null,null,null,null,null);
cursor.moveToFirst();//游标移动的第一位
do{
String name=cursor.getString(1);
int i=cursor.getInt(cursor.getColumnIndex("id"));
int age=cursor.getInt(cursor.getColumnIndex("age"));
Log.e(TAG,i+"-"+name+"-"+age);
}while (cursor.moveToNext())