sqlite相關技術記錄

今天使用SQLite來創建一張表的時候發現一個問題

sql語句之間一定要有空格和逗號,不然會報錯不能創建表的。

今天也學到了幾個關於SQLite的相關類的使用以及DAO和JAVEBEAN技術相結合的使用

記錄一些重點代碼吧。

首先是SQLiteOpenHelper這個類,這個類是用於管理數據庫的創建和版本更新的工具類,其中有2個重要的方法

onCreate()和onUpgrade(),第一個方法用來創建數據庫,第二個方法是更新數據庫的,也就是開發軟件時,版本更新了,就調用這個方法

但是在更新時也要同時再次調用onCreate()這個方法來從新創建數據庫(因爲數據庫中的數據已經改變,就需要重新創建),當然還有一個細節,當集成SQLiteOpenHelper這個類時必須要實現它的構造方法,構造器就是用來創建實例的,這樣就可以到其他的類中使用這個類以及調用其方法。

SQLiteOpenHelper還有2個重要的方法:

1,getWritableDatabase()用來創建一張表然後向其中插入數據,關鍵代碼如下        

                db = dbhelp.getWritableDatabase();
ContentValues values = new ContentValues();
// 把values插入到key鍵值中
values.put(DbInfo.Table.USER_ID, user.getUesr_id());
values.put(DbInfo.Table.USER_NAME, user.getUser_name());

注:db屬於SQLiteDataBase中的對象

2,getReadableDatabase()用來讀取數據庫中表的信息,然後就可以對錶中的數據進行查找,刪除等操作了

關鍵代碼如下:

   db = dbhelp.getReadableDatabase();
List<UserBean> userlist = null;
UserBean user = null;
// columns 想要顯示的列,若爲空則返回所有列,不建議設置爲空,如果不是返回所有列
Cursor cursor = db.query(DbInfo.Table.TABLE_NAME, columns, null, null,
null, null, null);
if (cursor != null && cursor.getCount() > 0) {
userlist = new ArrayList<UserBean>(cursor.getCount());

                      userlist.setString("sqlite");

讀取數據的話,肯定也要用到一個類,遊標工廠了,也就是Cursor這個類,它有一個query()方法,裏面包含的五個參數一般只需要前2個,後面的置爲null即可。

這裏創建了一個list集合用來保存數據,還有userbean要用null進行實例化,不然不能添加數據(因爲沒有實例化,就沒有分配內存空間,也就不能添加數據了)。

至於SQLiteDatabase這個類一般是和SQLiteOpenHelper結合使用的,它是用來管理數據庫的接口,這個類提供了create(),insert(),delete(),查詢(Retrieve)、更新(Update)這些方法。

數據庫中添加的數據不僅只有文字,還有音頻圖片等文件,這裏我只寫存儲圖片的方法

圖片我將其數據類型設置爲blob(二進制對象),通過轉換將二進制字節碼存入緩衝區,然後利用IO流讀取緩衝區中的數據,讀完後再用BitmapDrawable中的方法將其壓縮,最後存入數據表中,代碼如下:

               ByteArrayOutputStream os = new ByteArrayOutputStream();
BitmapDrawable bit = (BitmapDrawable) user.getUser_head();
// 壓縮圖片,把圖片壓到 os流中
bit.getBitmap().compress(CompressFormat.JPEG, 100, os);
                //用IO從緩衝區中讀取數據之後要轉換成字節流
values.put("圖片名", os.toByteArray());

以上就是今天所學的一些知識,自己總結的一些,讓別人看估計都看不懂

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章