編輯:關於Android編程
SQLite是一種輕量級的關系型數據庫,它體積小,零配置,可以直接運行在應用程序的進程中,非常適合嵌入式的操作系統。
首先要創建一個SQLite數據庫
通過類來實現SQLiteHelper這個抽象類,
public class PersonSqliteHelper extends SQLiteOpenHelper {
public PersonSqliteHelper(Context context) { super(context, "person.db", null, 1); }裡面有四個參數分別是context,數據庫名稱,工廠,和版本
傳的參數本來有四個,只需要保留一個就好了。
public void onCreate(SQLiteDatabase db) { db.execSQL("create table person (id integer primary key autoincrement,name varchar(20),number varchar(20))"); }onCreate是數據庫第一次被創建時調用的方法
這些還沒有真正的創建數據庫
PersonSqliteHelper p=new PersonSqliteHelper(this); p.getWritableDatabase();
有getReadableDatabase()和getWritableDatabase()兩個方法可用。
下面通過一些常見的操作來演示一下SQLite的增刪該查操作
private PersonSqliteHelper helper; // 在構造函數裡完成helper的初始化 public PersonDao(Context context) { helper = new PersonSqliteHelper(context); }
/** * 添加一條數據到數據庫 * @param name 姓名 * @param number 電話號碼 * @return 返回插入的數據的id * */ private boolean find(String name) { SQLiteDatabase db = helper.getReadableDatabase(); Cursor cursor = db.query("person", null, "name=?",new String[] { name }, null, null, null); boolean result = cursor.moveToNext(); cursor.close(); db.close(); return result; }
在上面的代碼中首先通過ContentValues創建了一個容器,然後通過put()方法將數據添加到ContentValues容器中,最後通insert()方法再分配到數據表中。
返回的值是新創建的一行的id.
查詢數據
/** * 查詢一條記錄是否存在 * @param name 姓名 * @return true 存在 false 不存在 * */ private boolean find(String name) { SQLiteDatabase db = helper.getReadableDatabase(); Cursor cursor = db.query("person", null, "name=?",new String[] { name }, null, null, null); boolean result = cursor.moveToNext(); cursor.close(); db.close(); return result; }
/** * 修改一條記錄 * @param name 要修改信息的人的姓名 * @param newNumber 新的電話號碼 * @return 返回受影響的記錄的條數 * */ private int updata(String name,String newNumber){ SQLiteDatabase db=helper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("number", newNumber); int numbers=db.update("person", values, "name=?", new String[]{name}); db.close(); return numbers; }
刪除數據
/** * 刪除一條數據 * @param name 姓名 * */ private int del(String name){ SQLiteDatabase db=helper.getWritableDatabase(); int number=db.delete("person", "name=?", new String[]{name}); db.close(); return number; }
/** * 返回全部的數據信息 * */ public ListfindAll(){ SQLiteDatabase db=helper.getReadableDatabase(); List persons=new ArrayList (); Cursor cursor=db.query("person", new String[]{"id","name","number"}, null, null, null, null, null); while (cursor.moveToNext()) { int id=cursor.getInt(cursor.getColumnIndex("id")); String name=cursor.getString(cursor.getColumnIndex("name")); String number=cursor.getString(cursor.getColumnIndex("number")); Person p=new Person(id, name, number); persons.add(p); } cursor.close(); db.close(); return persons;} }
所謂的事務處理就是保證操作的完整性,所有操作要麼同時成功,要麼同時失敗。
在SQLite中,事物的使用方法如下:
1、首先通過beginTransation()開始一個事物。
2、通過setTransactionSuccessful()設置一個事物成功的標志。
3、如果調用了以上第二步則成功地提交了事物,結束事物,否則回滾事物。方法為endTransaction().
比如:
db.beginTransaction(); try { ......//其他部分語句體 db.setTransactionSuccessful(); }finally{ db.endTransaction(); }
今天來給大家介紹一個非常有用的Studio Tips,有些時候我們在一個方法內部寫了過多的代碼,然後想要把一些代碼提取出來再放在一個單獨的方法裡,通常我們的做法是復制粘貼
從5.0版本開始,微信只支持用手機號開通賬號,那麼問題來了,如果換了手機號,原來的微信是不是也作廢了?裡面的好友怎麼辦?還有我們的零錢啊!!不用著急,換號不
最近由於項目的需要,自定義了一個具有側滑功能的listview,側滑後可以點擊編輯、刪除。好了,大家先看一下效果圖,畢竟是看臉的世界。 好了,我要先講一下思路,
1、效果圖: 2、核心代碼: height) reflectionHeight = height; // 創建倒影圖片(