Android應用程式四種資料存取方法總結

來源:互聯網
上載者:User
文章目錄
  • 1,採用Shared Preferences:
  • 2,採用File:
  • 3,採用網路空間:(略)
  • 4,採用SQLite資料庫:
1,採用Shared Preferences:

一句話實現儲存Android應用程式配置資訊:

儲存:getPreferences(Activity.MODE_PRIVATE).edit().putString(strKey,strValue).commit();

讀取:strValue=getPreferences(Activity.MODE_PRIVATE).getString(strKey,strDefault);

註:應用內不同Activity之間的配置資料共用使用getSharedPreferences()。

2,採用File:

Files 資料存放區主要是使用 Properties 並配合 FileInputStream或者FileOutputStream對檔案寫入操作。

儲存:

FileOutputStream stream=this.openFileOutput(FileName, Context.MODE_PRIVATE);

new Properties().put(strKey,strValue).store(stream, "");

讀取:

FileInputStream stream =this.openFileInput(FileName);

strValue=String.valueOf(new Properties().load(stream).getProperty(strKey));

註:採用 Properties的setProperty()方法,可以將索引值對打包,最後調用storeXXX方法寫入檔案。

3,採用網路空間:(略)4,採用SQLite資料庫:

A,SQLite預備知識:

預設資料庫路徑:data/data/myPackage/databases/

開啟資料庫:sqlite3 dbName

操作:.help 協助;.table 查看所有表

每一句Sql語句結束都需要分號;

B,JDBC驅動程式:

Class.forName("org.sqlite.JDBC");

Connection conn = DriverManager.getConnection("jdbc:sqlite:filename"); //filename為你的SQLite資料名稱

C,使用SQLiteOpenHelper操作資料庫:

獲得資料庫執行個體:

getReadableDatabase()獲得可讀的SQLiteDatabase

getWritableDatabase() 獲得可寫的SQLiteDatabase

SQLiteOpenHelper子類中需要重寫的常用事件:

onCreate(SQLiteDatabase)

onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion)

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

封裝的DBHelp類,實現對資料庫的操作:

public class DBHelp extends SQLiteOpenHelper {

public DBHelp(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(createTableSQL); // 執行SQL 需要使用execSQL()

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

@Override

public void onOpen(SQLiteDatabase db) {

InsertData()

UpdateData()

DeleteData()

rawQuery()

query()

建立並開啟資料庫:

SQLiteDatabase db = new DBHelp(SQLiteActivity.this).getReadableDatabase();

添加資料:

DBHelp dbHelp = new DBHelp(SQLiteActivity.this);

SQLiteDatabase db = dbHelp.getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValues.put("sName", txtName.getText().toString());

contentValues.put("sSex", "男");

dbHelp.InsertData(db, contentValues);

修改資料:

DBHelp dbHelp = new DBHelp(SQLiteActivity.this);

SQLiteDatabase db = dbHelp.getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValues.put("sName", txtsName.getText().toString());

String whereClause = "sid=?"; //要修改資料的條件 值用?預留位置

String[] whereArgs = new String[]{txtsID.getText().toString()};

dbHelp.UpdateData(db, contentValues, whereClause, whereArgs);

刪除資料:

DBHelp dbHelp = new DBHelp(SQLiteActivity.this);

SQLiteDatabase db = dbHelp.getWritableDatabase();

String whereClause = "sid=?"; //要刪除資料的條件 值用?預留位置

String[] whereArgs = new String[]{txtID.getText().toString()};

dbHelp.DeleteData(db, whereClause, whereArgs);

查詢資料:

Cursor cur =db.rawQuery(“SELECT * FROM Student WHERE sid=1 AND sname=‘zhangsan'", null);

Cursor cur =db.rawQuery(...)

每一個rawQuery()或query()都會返回一個SQLite資料庫Cursor。

操作遊標:

通過使用 getCount() 方法得到結果集中有多少記錄;

通過 moveToFirst(), moveToNext(), 和 isAfterLast() 方法遍曆所有記錄;

通過 getColumnNames() 得到欄位名;

通過 getColumnIndex() 轉換成欄位號;

通過 getString(),getInt() 等方法得到給定欄位目前記錄的值;

通過 requery() 方法重新執行查詢得到遊標;

通過 close() 方法釋放遊標資源;

SimpleCursorAdapter:和遊標關聯,綁定到ListView以呈現資料,前提條件,表中有_id列,並且是主鍵。

SimpleCursorAdapter simple = new SimpleCursorAdapter(SQLiteActivity.this, android.R.layout.simple_list_item_1, cur, new String[]{"sName","sSex"}, new int[]{android.R.id.text1,android.R.id.text2});

studentList.setAdapter(simple);

_id不是主鍵時,先從遊標是把資料取出來,然後採用SimpleAdapter來呈現資料:

ArrayList<HashMap<String, Object>> students = new ArrayList<HashMap<String,Object>>();

HashMap<String, Object> hs ;

for (cur.moveToFirst();!cur.isAfterLast();cur.moveToNext()) {

hs = new HashMap<String, Object>();

hs.put("sID", cur.getInt(cur.getColumnIndex("sid")));

hs.put("sName", cur.getString(cur.getColumnIndex("sName")));

hs.put("sSex", cur.getString(cur.getColumnIndex("sSex")));

students.add(hs);

}

SimpleAdapter sim = new SimpleAdapter(SQLiteActivity.this, students, android.R.layout.simple_list_item_1, new String[]{"sName","sSex"}, new int[]{android.R.id.text1,android.R.id.text2});

studentList.setAdapter(sim);

 

 《完》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.