編輯:關於android開發
SQLite數據庫
輕量級關系型數據庫
創建數據庫需要使用的api:SQLiteOpenHelper
public class Myopenhelper extends SQLiteOpenHelper { //new 時調用 public Myopenhelper(Context context, String name, CursorFactory factory, int version) { //name數據庫文件名,游標工廠,數據庫版本 super(context, name, factory, version); } //數據庫創建時調用 @Override public void onCreate(SQLiteDatabase db) {
//在創建數據庫時創建表..這裡可以增刪改查,只要換裡面的sql語句就可以了!!! db.execSQL("create table person (_id integer primary key autoincrement, name char(10), phone char(20), money integer(20))"); } //數據庫升級時此方法調用 @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { } }
創建數據庫
public class Testcase extends AndroidTestCase { public void test(){ //getContext():獲取虛擬的上下文,這是測試框架特地方便測試 Myopenhelper oh = new Myopenhelper(getContext(), "people.db", null, 1); //如果數據庫不存在,現先創建數據庫,再獲取可讀可寫的數據庫對象;若存在直接打開 SQLiteDatabase db = oh.getWritableDatabase(); //也是可讀可寫的數據庫對象,除非存儲空間滿了,需要數據庫以只讀方式 打開。 //SQLiteDatabase db1 = oh.getReadableDatabase(); } }
結果如下:
數據庫的增刪改查
SQL語句
* insert into person (name, phone, money) values ('張三', '159874611', 2000);
* delete from person where name = '李四' and _id = 4;
* update person set money = 6000 where name = '李四';
* select name, phone from person where name = '張三';
執行SQL語句實現增刪改查
//插入
db.execSQL("insert into person (name, phone, money) values (?, ?, ?);", new Object[]{"張三", 15987461, 75000});
//查找
Cursor cs = db.rawQuery("select _id, name, money from person where name = ?;", new String[]{"張三"});
測試方法執行前會調用此方法
protected void setUp() throws Exception {
super.setUp();
// 獲取虛擬上下文對象
oh = new MyOpenHelper(getContext(), "people.db", null, 1);
}
使用api實現增刪改查
* 插入
//以鍵值對的形式保存要存入數據庫的數據
ContentValues cv = new ContentValues();
cv.put("name", "劉能");
cv.put("phone", 1651646);
cv.put("money", 3500);
//返回值是改行的主鍵,如果出錯返回-1
long i = db.insert("person", null, cv);
* 刪除
//返回值是刪除的行數
int i = db.delete("person", "_id = ? and name = ?", new String[]{"1", "張三"});
* 修改
ContentValues cv = new ContentValues();
cv.put("money", 25000);
int i = db.update("person", cv, "name = ?", new String[]{"趙四"});
* 查詢
//arg1:要查詢的字段
//arg2:查詢條件
//arg3:填充查詢條件的占位符
Cursor cs = db.query("person", new String[]{"name", "money"}, "name = ?", new String[]{"張三"}, null, null, null);
while(cs.moveToNext()){
// 獲取指定列的索引值
String name = cs.getString(cs.getColumnIndex("name"));
String money = cs.getString(cs.getColumnIndex("money"));
System.out.println(name + ";" + money);
}
單元測試junit
定義一個類繼承AndroidTestCase,在類中定義方法,即可測試該方法
在清單文件裡加:
在指定指令集時,targetPackage指定你要測試的應用的包名
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.itheima.junit" //這個按 alt+/ 自己選吧!
></instrumentation>
定義使用的類庫
<uses-library android:name="android.test.runner"></uses-library>
斷言的作用,檢測運行結果和預期是否一致
如果應用出現異常,會拋給測試框架
Android--線程詳解 什麼是線程? 線程或者線程執行本質上就是一串命令(也是程序代碼),然後我們把它發送給操作系統執行。 一般來說,我們的CPU在任何時候一個
Android性能優化之加快應用啟動速度 應用的啟動 啟動方式 通常來說,在安卓中應用的啟動方式分為兩種:冷啟動和熱啟動。 1、冷啟動:當啟動應用時,後台沒有該應用的進
單機搭建Android開發環境(五),單機搭建android開發 前文介紹了Android系統開發環境的搭建,本文將簡單介紹Android應用開發環境的搭建。 基於
Tab標簽頁控件在很多編程技術中都能見到,它使得窗口顯示區能夠重復利用。在An