Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

適用於Android開發人員的SQLite速成課程

Difficulty:IntermediateLength:LongLanguages:

Chinese (Traditional) (中文(繁體)) translation by Zhang Xiang Liang (you can also view the original English article)

Android應用程序可以在SQLite數據庫中存儲應用程序數據.   在本教程中,您將學習如何設計和操作SQLite數據庫。 

這裏我們從設計和使用壹個簡單的SQLite數據庫來管理國際象棋聯賽比分。  本教程是對SQLite數據庫如何工作的簡要概述。  這些知識將在未來的開發教程中用於實現數據庫驅動的Android應用程序。 

入門

Android應用程序可以創建和操作他們自己的私有SQLite關系數據庫。  開發人員還可以使用作為稱為Android調試橋(adb)的Android SDK工具的壹部分提供的sqlite3命令行工具,在給定的Android模擬器或設備上檢查和修改數據庫。 

在本教程中,我們假設您理論上對關系數據庫有壹定的了解,但在您的Android應用程序中使用它們之前需要進行壹些復習。 這個特殊的教程不需要任何工具; 這更多是壹個理論練習。 

但是,如果您計劃開發依賴SQLite數據庫的Android應用程序,則需要安裝Android開發所需的工具,例如Android SDK和Eclipse IDE。 查看Mobiletuts +上提供的其他許多有用的Android教程,以幫助您完成這些任務。 . 

什麽是SQLite?

SQLite是壹個輕量級的關系數據庫引擎。 SQLite速度快,占用空間小,非常適合Android設備。 每個SQLite數據庫都存儲在磁盤上的單個文件中,而不是像Oracle和Microsoft SQL Server這樣重量級的基於服務器的數據庫。 Android應用程序可以選擇將私人應用程序數據存儲在SQLite數據庫中。

註意:如果您熟悉SQL,那麽SQLite將很容易獲得 。 SQLite基本上是嵌入式設備的精簡SQL數據庫引擎。 有關SQLite及其功能,功能和限制的具體信息,請參閱SQLite聯機文檔

數據庫基礎知識快速回顧

數據庫只是壹種持久性存儲數據的結構化方式。 數據存儲在表格中。 壹個表具有不同數據類型的列。 表中的每壹行代表壹個數據記錄。 您可能會發現像Excel電子表格這樣的表格會有幫助。 對於面向對象編程的角度來說,數據庫中的每個表經常表示壹個對象(由壹個類表示)。 每個表格列表示壹個類別屬性。  表中的每個記錄都表示該對象的特定實例。

我們來看壹個簡單的例子。 假設妳有壹個公司數據庫和壹個名為Employee的表。 Employee表可能有五個類型的列:EmployeeID(數字),FirstName(字符串),LastName(字符串),Title(字符串)和Salary(數字)。 然後,您可以為名為John Doe的員工添加壹條記錄到數據庫中,並為名為Anne Droid的員工另外添加壹條記錄。

數據庫中的數據是要檢查和操縱的。  表格中的數據可以是:

  • 添加(使用INSERT命令)
  • 修改(使用UPDATE命令)
  • 刪除(使用DELETE命令)

您可以使用稱為查詢的方式在數據庫中搜索特定數據。 查詢(使用SELECT命令)可能涉及壹個表或多個表。 要創建查詢,您必須使用SQL命令語言指定感興趣的表,數據列和數據值。 每個SQL命令都以分號(;)結尾。

國際象棋比賽數據庫

真正理解SQLite數據庫的功能的最好方法是通過壹個簡單的例子來完成工作,所以讓我們這樣做吧。 讓我們假裝我們有壹個應用程序,可以跟蹤隨機國際象棋比賽中的玩家得分。 記錄球員得分,然後在壹系列比賽結束時確定勝利者。 每位球員的總比賽得分都是根據他們的表現計算出來的:

  • 四場熱身賽(體重:每場總成績的10%)
  • 壹場半決賽(體重:總分的25%)
  • 壹次最終(體重:總分的35%)

註意:對於錦標賽來說,玩家得分可以基於壹個公式,這個公式可以決定贏得比賽的時間以及比賽結束時剩下的棋子類型和數量。 這樣壹來,壹個強大的選手將會因為輸掉幾個強大的棋子而很快贏得比賽而獲得高分。 也許風格和態度被評委包括在內,以鼓勵樂趣,輕松玩樂。 如何計算分數對於我們如何定義數據庫並不重要; 我們只是將它們存儲在數據庫中。 為了簡單起見,我們將假設分數基於0-100的分數。

設計數據庫模式

數據庫模式就是根據表,數據列等簡單定義數據庫的結構。 我們錦標賽數據庫的模式非常簡單: .

Tournamentscores數據庫模式有三個表格:

  • 玩家表格包含玩家信息。
  • 遊戲桌包含關於每個遊戲的信息以及它對玩家總體錦標賽分數的計數。
  • GameResults表包含所有玩家的遊戲分數。

SQLite3支持列的以下通用數據類型:

  • INTEGER(有符號整數)
  • REAL(浮點值)
  • TEXT(UTF-8或UTF-16字符串;使用數據庫編碼進行編碼)
  • BLOB(數據塊)

壹旦確定了每個表格需要哪些列,就可以在數據庫模式中創建壹些表格。

使用表格

我們從創建Players表開始。 此表需要壹個唯壹的玩家ID來引用每個玩家。 我們可以將它作為主鍵(唯壹標識此表中的記錄)並設置其自動增量屬性。 自動增量意味著每次添加新玩家記錄時,記錄都會得到壹個新的唯壹玩家ID。 我們還想存儲每個玩家的名字和姓氏 - 不允許有空位。
在這裏,我們可以使用CREATE TABLE SQL語句來生成Players表:

遊戲表格非常相似。 我們需要壹個獨特的遊戲ID來引用每個遊戲。 我們還希望為每場比賽提供壹個友好的名字,並且需要壹個權重值來表示遊戲對玩家的最終比賽得分(以百分比表示)。 以下是創建遊戲表的SQL語句:

  • 每個玩家的全名顯示為第壹個結果列(從他們的名字和姓氏計算)
  • 每個玩家的錦標賽分數顯示為第二個結果列(由給定玩家玩的所有遊戲的加權分數計算得出)
  • 結果記錄按比賽得分降序排列(第壹名,第二名等)

該查詢的結果如下所示:

結論

這就結束了我們對壹個簡單的SQLite數據庫例子的探索:壹個國際象棋比賽數據庫。 希望妳已經重新認識了關系數據庫的概念,如表,記錄和查詢,並熟悉了許多常用的SQLite命令。 最後,您已經完成了示例數據庫的設計和使用。 現在您已掌握了SQLite數據庫的工作方式,您可以在Android應用程序中使用它們(本系列下壹個教程的主題)。

關於作者

移動開發者Lauren Darcey和Shane Conder共同撰寫了幾本有關Android開發的書籍:壹本深入的編程書籍,標題為Android無線應用程序開發Sams TeachYourself Android應用程序開發24小時。 不寫時,他們花時間在公司開發移動軟件並提供咨詢服務。  他們可以通過電子郵件到androidwirelessdev+mt@gmail.com,通過他們的博客在androidbook.blogspot.com和Twitter @androidwireless上聯系。

需要更多幫助編寫Android應用程序? 查看我們的最新圖書和資源!

Buy Android Wireless Application Development, 2nd Edition Buy Sam's Teach Yourself Android Application Development in 24 Hours Mamlambo code at Code Canyon

关注我们的公众号
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.