Android Studio 學習(四) 數據庫


文件存儲

寫數據

String data = "Data ti save";
FileOutputStream out =null;
BufferedWriter writer =null;
try{
out = openFileOutput("data",Context.MODE_PRIVATE)//MODE_APPEND有同名文件時追加,PRIVATE是默認,有同名文件時覆蓋
writer = new BufferedWriter(new OutpurStreamWriter(out));
writer.writer(data);
}
catch(IOexception e)
{
e.printStackTrace();
}
finally
{
try{
if(writer!=null)
{
writer.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}

  • 在右側的Device File Explorer 查看存儲的文件
  • 存放路徑/data/data/com..../files/

讀數據

P201

SharedPreferences存儲

  • 存放路徑 /data/data/com.../shared_prefs

一、Context類中的getSharedPreferences()方法

getSharedPreferences("file_name","MODE_PRIVATE")//第二個參數只有一種

二、Activity類中的getPreferences(MODE_PRIVATE)//文件名默認我活動類名

三、PreferenceManager類中的getDefaultSharedPreferences()方法

具體方法

SharePreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putInt("age",28);
editor.apply();//提交

ShareOreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name=pref.getString("name","")//若找不到值 就用方法傳進來的值代替

SQLite數據庫

  • 存儲位置 /data/data/com.example.administrator.myapplication/databases

  • SQLiteOpenHelper 兩個實例方法

  • getReadableDatabase()//都可以對可讀寫的數據庫進行讀寫

  • getWriteableDatabase()//不可寫入的時候 使用此方法報錯

構造方法
SQLiteOpwnHelper(Context,"database_name",null,"1"//database_version);//當最后一個參數大於上一個版本時 會執行onUpgrade方法

package com.example.administrator.myapplication;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK=
"create table Book(" +
"id integer primary key autoincrement," +
"author text," +
"pages integer," +
"name text)";
private Context mContext;
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,int version)
{
super(context,name,factory,version);
mContext=context;
}

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    sqLiteDatabase.execSQL(CREATE_BOOK);//執行建表語句
    Toast.makeText(mContext,"yes",Toast.LENGTH_LONG).show();
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    db.execSQL("drop table if exists Book");
    db.execSQL("drop table if exists Category");
    onCreate(db);//升級數據庫
}

}

更新

SQLiteDatabase db = SQLiteOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("key","value");
db.insert("table_name",null,values);//插入
db.update("table_name",values,"name=?",new String[] {"The Da "}) //?是個占位符,The Da 會替換? 意思就是更新 名為 The Da 的內容
db.delete("table_name","pages>?",new String[] {"500"})//刪除大於500行的數據
values,clear();

adb shell

  • sqlite3 databasename.db
  • .table 查看有哪些表
  • .schema 建表語句

查詢

使用query()方法七個參數
SQLiteDatabase db = SQLiteOpenHelper.getWritableDatabase();
Cursor cursor = db.query("Bool",null,null,null,null,null,null,null);
if(cursor.moveToFirst())
{
do{
String name=cursor.getString(cursor.getColumnIndex("name"));
}while(cursor.moveToNext());

}
cursor.close();

使用sql方式

db.execSQL("insert into Book (name,author,pages,price) values(?,?,?,?),new String[] {"sfs","sfsf",“23.5”,”454"}");
db.rawQuery("select * from Book",null);

LitePal (未完待續)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM