iOS中sqlite資料庫的原生用法_IOS

來源:互聯網
上載者:User

在iOS中,也同樣支援sqlite。目前有很多第三方庫,封裝了sqlite操作,比如swift語言寫的SQLite.swift、蘋果官網也為我們封裝了一個架構:CoreData。

它們都離不開Sqlite資料庫的支援。

本文主要介紹下,如何在swift中使用原生的sqlite的API。

在Xcode中引入sqlite API
建立一個swift項目後,我們需要讓項目引入sqlite的動態連結程式庫:

1、項目配置介面,選擇Build Phases

2、點開Link Binary With Libraries,點擊+號,在彈窗中輸入sqlite3

完成後:

3、建立橋接檔案,在項目目錄下建立一個標頭檔(h):

4、然後使用import匯入sqlite庫:

#import "sqlite3.h"


5、最後一步,在項目配置介面,選擇Build Setting,搜尋方塊中輸入swift,在結果中選擇Objective-C Bridging Header,輸入剛才建立的橋接檔案的名稱:

整個引入工作已經完成了,可以測試下是否引入成功,在swift檔案中,輸入sqlite3,看是否有sqlite3相關的智能提示出來。

建立(開啟)與關閉資料庫
要建立或者開啟一個sqlite資料庫,使用sqlite3_open方法,我們無需手動建立一個資料庫檔案,如果沒有檔案,sqlite3_open方法會為我們自動建立資料庫檔案,然後開啟資料庫。

//資料庫存放路徑let sqlitepath = NSHomeDirectory().stringByAppendingPathComponent("Documents/sqlite3.db")//開啟資料庫,指定資料庫檔案路徑,如果檔案不存在後先建立檔案,再開啟,所以無需手動建立檔案let state = sqlite3_open(sqlitepath, &db)if state == SQLITE_OK{ println("開啟資料庫成功")}else{ println("開啟資料庫失敗")}

這裡sqlite3_open方法的第二個參數是一個指標,是資料庫開啟後返回的一個操作指標,通過使用它,我們可以對資料庫進行一系列的操作。我們先把它定義在外面,方便我們使用。

var db:COpaquePointer = niloverride func viewDidLoad() { super.viewDidLoad() ...}

建立表和刪除表
使用sqlite3_exec方法可以執行一段sql語句,主要就是sql語句的差異,其他都一樣:

//建立表let createtable = "create table if not exists students (id integer primary key autoincrement,nametext,stuId integer)"let result = sqlite3_exec(db, createtable, nil, nil, nil)if result == SQLITE_OK{ println("建立表成功")}//刪除表let removetable = "drop table studets"let result2 = sqlite3_exec(db, removetable, nil, nil, nil)if result2 == SQLITE_OK{ println("刪除表成功")}

插入更新刪除資料
插入資料使用了預留位置,sql語句中使用問號代表值。使用sqlite3_bind_xxx來綁定值。

//插入資料let inserttable = "insert into studets (stuId,name) values(?,?)"var statement:COpaquePointer = nillet result3 = sqlite3_prepare_v2(db, inserttable, -1, &statement, nil)if result3 == SQLITE_OK{ //綁定資料 sqlite3_bind_int(statement, 1, 1) sqlite3_bind_text(statement, 2, "lijialong", -1, nil)  //執行 if sqlite3_step(statement) == SQLITE_DONE{  println("資料插入成功") } sqlite3_finalize(statement) }

更新資料也類似幾個步驟:

let updatetable = "update studets set name ='ss' where id = 1"var statement:COpaquePointer = nilsqlite3_prepare_v2(db, updatetable, -1, &statement, nil)sqlite3_step(statement)sqlite3_finalize(statement)

刪除資料:

let deleterow = "delete from studets where name='lijialong'"sqlite3_prepare_v2(db, deleterow, -1, &statement, nil)sqlite3_step(statement)sqlite3_finalize(statement)

查詢資料

//查詢資料let query = "select * from studets"//這條執行後,資料就已經在sattement中了sqlite3_prepare_v2(db, query, -1, &statement, nil)//遊標往下走一步,如果返回SQLITE_ROW就進入while sqlite3_step(statement) == SQLITE_ROW{ let id = sqlite3_column_int(statement, 0) let stuId = sqlite3_column_int(statement, 2)}

以上就是關於iOS中sqlite資料庫的原生用法詳細介紹,希望對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.