轻量级的、嵌入式的、关系型数据库
Android、IOS等广泛使用的的数据库系统
SQLite数据库之中可以方便的使用SQL语句,实现数据的增加、修改、删除、查询等操作
SQLiteOpenHelper:负责创建、打开、更新、关闭数据库和创建数据表
SQLiteDataBase:执行SQL语句、对数据表的增删改查
存储文件名,数据将保存在/data/data/程序的包名称/databases/xxxx.db中
SQLiteDatabase db = openOrCreateDatabase("test.db", Context.MODE_PRIVATE, null);
db.execSQL("DROP TABLE IF EXISTS person");
db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT, _name VARCHAR, _age SMALLINT)");
//方法【一】
db.execSQL("INSERT INTO person VALUES (NULL, ?, ?)", new Object[]{"mar", 1});
//方法【二】ContentValues以键值对的形式存放数据
ContentValues cv = new ContentValues();
cv.put("_name","joy");
cv.put("_age", 2);
db.insert("person", null, cv); //插入ContentValues中的数据
cv = new ContentValues();
cv.put("_age", 35);
db.update("person", cv, "name = ?", new String[]{"joy"});
//方法【一】 rawQuery
Cursor c = db.rawQuery("SELECT * FROM person WHERE age >= ?", new String[]{"33"});
//方法【二】执行query方法
Cursor c=db.query("users", new String[]{"_id","_name","_pwd"},
"_name=?",new String[]{"user01"},null,null,null);
while (c.moveToNext()) {
int id = c.getInt(c.getColumnIndex("_id"));
String name = c.getString(c.getColumnIndex("_name"));
int age = c.getInt(c.getColumnIndex("_age"));
Log.d("db", "_id=>" + id + ", name=>" + name + ", age=>" + age);
}
c.close();//关闭结果集
db.delete("person", "age < ?", new String[]{"35"});//
db.delete("Test","WHERE _id="+0,null);
db.execSQL("delete from 表名 where 条件");
db.close();
deleteDatabase("test.db");
一种轻量级的数据保持方式,以键值对的方式将数据存入的xml文件中,通过key从文件中取出数据
两种方式的区别:
SharedPreferences sp=super.getSharedPreferences("app_param", Context.MODE_PRIVATE);
存储文件名,数据将保存在/data/data/base package/shared_prefs/app_param.xml中
为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
使用SharedPreferences可以方便的完成数据的存储功能,但是其只能保存一些很简单的数据,如果想存储更多类型的数据,则可以使用文件的存储操作
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED
存入数据---putXXX(key,value)
SharedPreferences sp=super.getSharedPreferences("app_param", Context.MODE_PRIVATE);
SharedPreferences.Editor editor=sp.edit();
editor.putString("use","tom");
editor.putInt("age", 1); //默认值 1
editor.commit();
取出数据----getXXX(key,default)
SharedPreferences sp=super.getSharedPreferences("app_param", Context.MODE_PRIVATE);
sp.getInt("use",0);//默认值 0
private int save(String fileName,NewsItem item){
Log.d("io","save()");
int ret=0;
//Environment.getExternalStorageDirectory()拿目录 Environment.MEDIA_MOUNTED已加载
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
return -1;
}
ObjectOutputStream oos=null;
//super.getFilesDir();//系统路径
String filePath=Environment.getExternalStorageDirectory().toString()
+File.separator+fileName;//File.separator路径
File file=new File(filePath);//创建文件,用于判断文件是否存在
File parentFile=file.getParentFile();
if (!parentFile.exists()) {//父文件夹不存在
parentFile.mkdir();//创建文件所在目录
}
try {
oos=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
oos.writeObject(item);
ret=1;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
oos.flush();
if (oos!=null)oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return ret;
}
private NewsItem read(String fileName){
Log.d("io","read()");
NewsItem item=null; if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//如果sdcard存在
return null;
}
String filePath=Environment.getExternalStorageDirectory().toString()
+File.separator+fileName;//File.separator路径
File file=new File(filePath);
if (!file.exists()) {
return null;
}
ObjectInputStream ois=null;
try {
ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
item=(NewsItem)ois.readObject();
} catch (StreamCorruptedException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return item;
}