一,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"));  //取值

        


        


二、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总结

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) {

    }
}
/**
 * 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,在主函数里调用

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;
    }
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;
    }