一,sharedpreferences
保存的數據主要是相似於配置信息合適的數據,主要保存的數據是key-value對
方法:定義一個sharedpreferences對象,而後用.edit()方法來獲取一個editor對象,editor對象能夠用來執行存儲和修改數據操做,每次操做都要
commit一下,而sharepreferences對象只能讀取操做
ps:在 DDOM filter explorer的data目錄下打不開data文件.緣由是手機沒有得到root權限,改成用虛擬機運行就沒有該問題了,
SharedPreferences pref=getSharedPreferences("mypref",MODE_PRIVATE); //mode表示讀取權限
Editor editor=pref.edit(); //調用它的EDITOR方法來獲取一個editor對象
editor.putString("name","taylor");
editor.putInt("age",12);
editor.putLong("time",System.currentTimeMillis());
editor.commit(); //每進行一次操做就要提交一次
editor.remove("age");
editor.commit();
System.out.println(pref.getString("name","swift")); //取值
2、SQLite
.db.execSQL(sql) //執行任何SQL語句
db.insert(table,nullColumuHack,values) //null爲默認
db.delete(table,whereClause,whereArgs)
db.update(table,values,whereClause,whrereArgs)
db.query(table,colums,selection,selectionArgs,groupBy,having,orderBy)
db.rawQuery(sql,selectionArgs) //s第二個參數爲查詢條件,null爲默認所有把數據查出
打開或者建立數據庫
SQLiteDatabase db=openOrCreateDatabase("user.db",MODE_PRIVATE,null); //數據庫名字必須加後綴
插入sql語句,建表語句
db.execSQL("creat table if not exists usertb(_id integer primary key autoincrement,name text not null,age integer not null,sex text not null)"); //主鍵能夠沒必要寫在插入語句裏面
注意在定義主鍵名字前面必須加上_id
在新建的表格裏面插入數據
db.execSQL("insert into userb (name,age,sex) values('張三',18,'女')");
更新、修改數據庫裏面部分值數據庫
查找
Cursor c=db.rawQuery("select *from usertb",null); //遊標爲存儲結果的集合
if(c!=null)
{
while(c.movetoNext) //不管幾條數據U都要加上游標便利
{
Log.i("info","_id:"+c.getInt(c.getColumnIndex("_id")));
Log.i("info","name:"+c.getString(c.getColumnIndex("name")));
Log.i("info","sex:"+c.getInt(c.getColumnIndex("sex")));
}
c.close(); //人爲釋放內存對象
}
db.close();
$關於 Cursor
Cursor 是每行的集合,當執行數據庫 db.rawQuery查詢語句的時候會返回一個Cursor對象,全部數據庫裏面的數據均可以經過該Cursor來得到.
關於Cursor的重要方法:
close()
關閉遊標,釋放資源
copyStringToBuffer(int columnIndex, CharArrayBuffer buffer)
在緩衝區中檢索請求的列的文本,將將其存儲
getColumnCount()
返回全部列的總數
getColumnIndex(String columnName)
返回指定列的名稱,若是不存在返回-1
getColumnIndexOrThrow(String columnName)
從零開始返回指定列名稱,若是不存在將拋出IllegalArgumentException 異常。
getColumnName(int columnIndex)
從給定的索引返回列名
getColumnNames()
返回一個字符串數組的列名
getCount()
返回Cursor 中的行數
moveToFirst()
移動光標到第一行
moveToLast()
移動光標到最後一行
moveToNext()
移動光標到下一行
moveToPosition(int position)
移動光標到一個絕對的位置
moveToPrevious()
移動光標到上一行
注意:若是查詢數據較小不會有內存問題,若是數據量很大,特別是裏面有Blob信息時,應該保證Cursor佔用內存及時被釋放掉
cursor.close();
注意在最後也應該把數據庫釋放掉!
使用內置函數操做 //推薦
ContentValues:
用於存儲一組能夠被ContentResolve處理的值
SQLiteDatabase db=openOrCreateDatabase("stu.db",MODE_PRIVATE,null);
db.execSQL("create table if not exists stutb(_id integer primary key autoincrement,task_type text,task text,date text)");
ContentValues values=new ContentValues();
values.put("task_type","我要減肥肥");
values.put("task", "今天不吃飯");
values.put("date", "2015-12-27");
long rowId=db.insert("stutb",null,values); //返回所在列的序號
values.clear(); //每次都要清空一次
values.put("task_type","我要減肥肥");
values.put("task","今天不吃飯");
values.put("date", "2015-12-27");
long rowid=db.insert("stutb",null,values); //返回所在列的序號
values.clear();
//修改和刪除操做
values.put("task","我要跑步");
db.update("stu.db", values, "_id>?", new String[]{"3"}); //將id>3的任務所有改爲我要跑步
db.delete("stu.db","task like ?",new String [] {"%減肥%"}); //將任務中帶有減肥的字段刪除
//查詢
Cursor c=db.query("stutb", null, "_id>?", new String[]{"0"}, null, null, "task");
if(c!=null){
String []columns=c.getColumnNames(); //該方法返回全部類列的內容
while(c.moveToNext()){
for (String columnName:columns) {
System.out.print(c.getString(c.getColumnIndex(columnName)));
}
}
}
3.輔助類SQLiteOpenHelper總結 java
(學習博客 http://byandby.iteye.com/blog/836250) sql
1.Java:先寫一個類繼承SQLiteOpenHelper 數據庫
/**
* Created by yx on 2015/12/27.
*/
public class MySqliteHelper extends SQLiteOpenHelper{
public MySqliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) { //在此方法裏面建立表格和主要類型
db.execSQL("create table if not exists my_table(_id integer primary key autoincrement,task_type text,task text,date text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
2,在主函數裏調用 swift
public class MainActivity extends AppCompatActivity {
MySqliteHelper mySqliteHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mySqliteHelper=new MySqliteHelper(this,"my.db",null,1);
//插入
Insert(mySqliteHelper);
//更新
int iiid=1;
Update(mySqliteHelper,iiid);
//刪除
int iidd=1;
Delete(mySqliteHelper,iidd);
//查詢
int iid=1;
String text=queryData(mySqliteHelper,iid);
}
//插入
public void Insert(MySqliteHelper mySqliteHelper){
SQLiteDatabase db=mySqliteHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("task_type", "我要減肥");
values.put("task", "不吃晚飯");
values.put("date", "2015-12-27");
db.insert("my_table", null, values);
db.close();
}
//更新
public void Update(MySqliteHelper mySqliteHelper,int iiid){
SQLiteDatabase db=mySqliteHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("task_type","better");
db.update("my_table", values, "_id=?", new String[]{"iiid"});
db.close();
}
//刪除
public void Delete(MySqliteHelper mySqliteHelper,int iidd){
SQLiteDatabase db=mySqliteHelper.getWritableDatabase();
db.delete("my_table","_id==?",new String[]{"iidd"});
}
//查詢
public String queryData(MySqliteHelper mySqliteHelpe,int iid){
SQLiteDatabase db=mySqliteHelpe.getReadableDatabase();
String text="";
Cursor c=db.rawQuery("select * from my_table",null);
if(c!=null){
String []columns=c.getColumnNames();
while(c.moveToNext()){
if(c.getInt(c.getColumnIndex("_id"))==iid){
break;
}
}
for (String columnname :columns) {
text=c.getString(c.getColumnIndex(columnname))+" "+text;
}
}
c.close();
db.close();
return text;
}