前序:
Android五大存儲:內部存儲、外部存儲、網絡存儲、SharedPreferences和SQLite
這次不廢話了,講到的知識除了SQLite ?還涉及到單元測試框架,請看下圖:
英文看不懂沒關系,看到綠色長條說明測試運行成功!!!
正文:
直接看代碼:
/**
* Created by xuchen on 2016/9/1.
*/
public class MyOpenHelper extends SQLiteOpenHelper {
public MyOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
//數據庫創建的時候調用此方法
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table person(_id integer primary key autoincrement,name char(10),salary) char(20),phone integer(20))");
Log.e("onCreate: ", "數據庫創建了");
}
//數據庫升級時調用此方
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
Log.e("onUpgrade: ", "數據庫升級了");
}
SQLiteOpenHelper? 顧名思義SQLite打開幫助類,最重要的便是這三個方法了onCreate(); ? onUpgrade(); MyOpenHelper();
測試:
public class TextCase extends AndroidTestCase {
private MyOpenHelper myOpenHelper;
private SQLiteDatabase db;
public void text(){
//getContext():獲取一個虛擬的上下文
MyOpenHelper myOpenHelper = new MyOpenHelper(getContext(), "peopel.db", null, 1);
//如果數據庫不存在,先創建數據庫,再獲取可讀可寫的數據庫對象,如果數據庫存在,就直接打開
SQLiteDatabase db = myOpenHelper.getWritableDatabase();
}
@Override
protected void setUp() throws Exception {
super.setUp();
myOpenHelper = new MyOpenHelper(getContext(), "people.db", null, 1);
db = myOpenHelper.getWritableDatabase();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
db.close();
}
public void insert(){
db.execSQL("insert into person (name,salary,phone)values(?,?,?)",new Object[]{"小汪","20000",110});
db.execSQL("insert into person (name,salary,phone)values(?,?,?)",new Object[]{"小華","25000",120});
db.execSQL("insert into person (name,salary,phone)values(?,?,?)",new Object[]{"小哥","30000",119});
}
public void delete(){
db.execSQL("delete from person where name =?",new Object[]{"小汪"});
}
public void update(){
db.execSQL("update person set phone=? where name=?",new Object[]{10086,"小華"});
}
public void select(){
Cursor cursor = db.rawQuery("select name,salary from person",null);
while (cursor.moveToNext()){
//通過列索引獲取列的值
String name = cursor.getString(cursor.getColumnIndex("name"));
String salary = cursor.getString(cursor.getColumnIndex("salary"));
Log.e("select: ",name+";"+salary);
}
}
/**
* SQLite API;
*/
public void insertAPI(){
//把要插入的數據全部封裝至ContentValues對象
ContentValues values = new ContentValues();
values.put("name","德瑪西亞");
values.put("salary","30000");
values.put("phone",911);
db.insert("person",null,values);
}
public void deleteAPI(){
int i = db.delete("person", "name = ? and _id=?", new String[]{"德瑪西亞", "3"});
Log.e("i: ", String.valueOf(i));
}
public void updateAPI(){
ContentValues values = new ContentValues();
values.put("salary",50000);
int i = db.update("person", values, "name=?", new String[]{"小哥"});
Log.e("i: ", String.valueOf(i));
}
public void selectAPI(){
Cursor cursor = db.query("person", null, null, null, null, null, null, null);
while (cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
String salary = cursor.getString(cursor.getColumnIndex("salary"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
Log.e("selectAPI: ",name+";"+salary+";"+phone );
}
public void transaction(){
try {
//開啟事務
db.beginTransaction();
ContentValues values = new ContentValues();
values.put("phone",10010);
db.update("person",values,"name=?",new String[]{"小哥"});
values.clear();
values.put("salary",60000);
db.update("person",values,"name=?",new String[]{"小哥"});
//設置事務執行成功
db.setTransactionSuccessful();
}
finally {
//關閉事務,同時提交,如果已經設置事務執行成功,那么sql語句就生效了,反之,sql語句回滾
db.endTransaction();
}
分享:
如果對于如何用Android開發游戲感興趣的同學可以看這篇文章,鏈接如下:
五子棋:http://www.lxweimin.com/writer#/notebooks/4761187/notes/5418026
反饋:
歡迎萬能網友互相分享交流!
CSDN:http://write.blog.csdn.net/postlist
github: https://github.com/ITtrap
QQ: 2632545852? ? ? ? ? 微信:xuchen2100
Email: xuchen1009@gmail.com