亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【Android游戲開發(fā)十三】(保存游戲數據 [下文]

系統(tǒng) 2362 0


Himi 原創(chuàng), 歡迎轉載,轉載請在明顯處注明! 謝謝。

原文地址: http://blog.csdn.net/xiaominghimi/archive/2011/01/04/6114629.aspx

上一篇跟各位童鞋介紹了SharedPreference 和 File流如何存儲數據,并且推薦使用FileOutputStream/FileInputStream來存儲咱們游戲數據,那么這一篇則是像大家介紹另外一種適合游戲數據存儲的方式:SQLite 輕量級數據庫!

先介紹幾個基本概念知識:

什么是SQLite:

SQLite是一款輕量級數據庫,它的設計目的是嵌入式,而且它占用的資源非常少,在嵌入式設備中,只需要幾百KB!!!!!

SQLite的特性:

  • 輕量級
    使用 SQLite 只需要帶一個動態(tài)庫,就可以享受它的全部功能,而且那個動態(tài)庫的尺寸想當小。
  • 獨立性
    SQLite 數據庫的核心引擎不需要依賴第三方軟件,也不需要所謂的“安裝”。
  • 隔離性
    SQLite 數據庫中所有的信息(比如表、視圖、觸發(fā)器等)都包含在一個文件夾內,方便管理和維護。
  • 跨平臺
    SQLite 目前支持大部分操作系統(tǒng),不至電腦操作系統(tǒng)更在眾多的手機系統(tǒng)也是能夠運行,比如:Android。
  • 多語言接口
    SQLite 數據庫支持多語言編程接口。
  • 安全性
    SQLite 數據庫通過數據庫級上的獨占性和共享鎖來實現獨立事務處理。這意味著多個進程可以在同一時間從同一數據庫讀取數據,但只能有一個可以寫入數據.

優(yōu)點:1.能存儲較多的數據。

2.能將數據庫文件存放到SD卡中!

什么是 SQLiteDatabase?

一個 SQLiteDatabase 的實例代表了一個SQLite 的數據庫,通過SQLiteDatabase 實例的一些方法,我們可以執(zhí)行SQL 語句,對數 據庫進行增、刪、查、改的操作。需要注意的是,數據庫對于一個應用來說是私有的,并且在一個應用當中,數據庫的名字也是惟一的。

什么是 SQLiteOpenHelper ?

根據這名字,我們可以看出這個類是一個輔助類。這個類主要生成一個數據庫,并對數據庫的版本進行管理。當在程序當中調用這個類的 方法getWritableDatabase(),或者getReadableDatabase()方法的時候,如果當時沒有數據,那么Android 系統(tǒng)就會自動生成一 個數 據庫。SQLiteOpenHelper 是一個抽象類,我們通常需要繼承它,并且實現里邊的3 個函數,

什么是 ContentValues 類?

ContentValues 類和Hashmap/Hashtable 比較類似,它也是負責存儲一些名值對,但是它存儲的名值對當中的名是一個

String 類型,而值都是基本類型。

什么是 Cursor ?

Cursor 在Android 當中是一個非常有用的接口,通過Cursor 我們可以對從數據庫查詢出來的結果集進行隨機的讀寫訪問。

OK,基本知識就介紹到這里,下面開始上代碼:還是按照我的一貫風格,代碼中該解釋的地方都已經在代碼中及時注釋和講解了!

順便來張項目截圖:

【Android游戲開發(fā)十三】(保存游戲數據 [下文])詳解SQLite存儲方式,并把SQLite的數據庫文件存儲在SD卡中?。?!

先給出xml:

xml中定義了我們需要練習用到的幾個操作按鈕,這里不多解釋了,下面看java源碼:先看我們繼承的SQLiteOpenHelper 類

我喜歡代碼中立即附上解釋, 感覺這樣代碼 比較讓大家更容易理解和尋找,當然如果童鞋們不喜歡,可以告訴我,我改~嘿嘿~

下面看最重要的MainActivity中的代碼:

以上代碼中我們實現了兩種存儲方式:

一種存儲默認系統(tǒng)路徑/data-data-com.himi-databases下,另外一種則是保存在了/sdcard-himi下,生成數據庫文件himi.db

那么這里兩種實現方式大概步驟和區(qū)別說下:

----------- 如果我們使用默認系統(tǒng)路徑存儲數據庫文件:

第一步:新建一個類繼承SQLiteOpenHelper;寫一個構造,重寫兩個函數!

第二步:在新建的類中的onCreate(SQLiteDatabase db) 方法中創(chuàng)建一個表;

第三步:在進行刪除數據、添加數據等操作的之前我們要得到數據庫讀寫句柄得到一個數據庫實例;

注意: 繼承寫這個輔助類,是為了在我們沒有數據庫的時候自動為我們生成一個數據庫,并且生成數據庫文件,這里也同時創(chuàng)建了一張表,因為我們在onCreate里是在數據庫中創(chuàng)建一張表的操作;這里還要注意在我們new 這個我們這個MySQLiteOpenHelper 類實例對象的時候并沒有創(chuàng)建數據庫喲~!而是在我們調用 ( 備注3) MySQLiteOpenHelper ..getWritableDatabase() 這個方法得到數據庫讀寫句柄的時候,android 會分析是否已經有了數據庫, 如果沒有會默認為我們創(chuàng)建一個數據庫并且在系統(tǒng)路徑data-data-com.himi-databases下生成himi.db 文件!

(如果我們使用sd卡存儲數據庫文件,就沒有必要寫這個類了,而是我們自己Open自己的文件得到一個數據庫,西西,反而方便~ )

-----------如果我們需要把數據庫文件存儲到SD卡中:

第一步:確認模擬器存在SD卡,關于SD卡的兩種創(chuàng)建方法見我的博文:【Android 2D游戲開發(fā)之十】

第二步: (備注1) 先創(chuàng)建SD卡目錄和路徑已經我們的數據庫文件!這里不像上面默認路徑中的那樣,如果沒有數據庫會默認系統(tǒng)路徑生成一個數據庫和一個數據庫文件!我們必須手動創(chuàng)建數據庫文件!

第三步:在進行刪除數據、添加數據等操作的之前我們要得到數據庫讀寫句柄得到一個數據庫實例; (備注2) 此時的創(chuàng)建也不是像系統(tǒng)默認創(chuàng)建,而是我們通過打開第一步創(chuàng)建好的文件得到數據庫實例。這里僅僅是創(chuàng)建一個數據庫?。。。?

第四步:在進行刪除數據、添加數據等操作的之前我們還要創(chuàng)建一個表!

第五步:在配置文件AndroidMainfest.xml 聲明寫入SD卡的權限,上一篇已經介紹權限了,不知道的自己去看下吧。

有些童鞋不理解什么默認路徑方式中就有表?那是因為我們在它默認給我們創(chuàng)建數據庫的時候我們有創(chuàng)建表的操作,就是MySQLiteOpenHelper類中的onCreate()方法里的操作!所以我們如果要在進行刪除數據、添加數據等操作的之前還要創(chuàng)建一個表,創(chuàng)建表的方法都是一樣的。

總結:不管哪種方式我們都要-創(chuàng)建數據庫-創(chuàng)建表-然后進行操作!

備注4:

在Android中查詢數據是通過Cursor類來實現的,當我們使用SQLiteDatabase.query()方法時,會得到一個Cursor對象,Cursor指向的就是每一條數據。它提供了很多有關查詢的方法,具體方法如下:

以下是方法和說明:

move 以當前的位置為參考,將Cursor移動到指定的位置,成功返回true, 失敗返回false

moveToPosition 將Cursor移動到指定的位置,成功返回true,失敗返回false

moveToNext 將Cursor向前移動一個位置,成功返回true,失敗返回false

moveToLast 將Cursor向后移動一個位置,成功返回true,失敗返回 false。

movetoFirst 將Cursor移動到第一行,成功返回true,失敗返回false

isBeforeFirst 返回Cursor是否指向第一項數據之前

isAfterLast 返回Cursor是否指向最后一項數據之后

isClosed 返回Cursor是否關閉

isFirst 返回Cursor是否指向第一項數據

isLast 返回Cursor是否指向最后一項數據

isNull 返回指定位置的值是否為null

getCount 返回總的數據項數

getInt 返回當前行中指定的索引數據

對于SQLite的很多童鞋有接觸過,但是就不知道怎么存儲在SD中,所以我也研究了下,這篇也寫了把sd卡中的方式也提供給大家。

OK 這元旦放假幾天就光給大家寫這個了,呵呵~凌晨2點了,咳咳~該睡覺了。(我一般凌成3點睡覺,早8點起來上班呵呵~習慣了~)

(推薦大家訂閱本博客,因為咱的更新速度可是很快的~娃哈哈)

本篇源碼: http://download.csdn.net/source/2959222

【Android游戲開發(fā)十三】(保存游戲數據 [下文])詳解SQLite存儲方式,并把SQLite的數據庫文件存儲在SD卡中!?。?


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲欧美国产高清va在线播放 | 一极毛片| 精品久久久久久中文字幕专区 | 在线欧美精品一区二区三区 | 国产成人国产在线观看入口 | 九九久久九九 | 手机看片国产精品 | 亚洲产在线精品第一站不卡 | 欧美亚洲黄色 | 2022国产91精品久久久久久 | 一级毛片免费看 | 久久精品天天中文字幕人 | 青青久草 | 一级黄色毛片 | 午夜网站在线观看免费网址免费 | 日韩一区三区 | 黄色网址视频在线播放 | 欧美日韩免费大片 | 久久久在线视频精品免费观看 | 四虎成人精品国产一区a | 视频1区 | 国产高清一级毛片在线不卡 | 午夜在线 | 欧美白人猛性xxxxx交69 | 爱爱视频欧美 | 国产免费久久精品99久久 | 欧美日韩中文一区 | 亚洲综合一区二区三区 | a高清免费毛片久久 | 久久久网久久久久合久久久久 | 四虎永久免费网站 | 国产99在线观看 | 日本aaaa级 | 亚洲国产精品综合久久20 | 精品视频在线免费观看 | 日日夜夜操操 | 亚洲精品一区二区三区美女 | 99这里只有 | 麻豆精品久久精品色综合 | 国产精品拍自在线观看 | 香蕉视频在线看 |