? ? ? ?SQLite提供了對SQL-92標準的支持,支持多表、索引、事務、視圖和觸發。SQLite是無數據類型的數據庫,就是字段不用指定類型。下面的代碼在SQLite中是合法的:
? ? ? ?要創建數據庫,需要經過如下3個步驟。
? ? ? ?(1) 使用sqlite3_open函數打開數據庫。
? ? ? ?(2) 使用sqlite3_exec函數執行Create Table語句,創建數據庫表。
? ? ? ?(3) 使用sqlite3_close函數釋放資源。
? ? ? ?在這個過程中,我們使用了3個SQLite3函數,它們都是純C語言函數。通過Objective-C調用C函數當然不是什么問題,但是也要注意Objective-C數據類型與C數據類型的兼容性問題。
? ? ??首先,我們需要添加SQLite3庫到運行的工程環境中。選擇工程中TARGETS→PresentationLayer→Build?phases→Link Binary With Libraries,點擊左下角的+按鈕,從彈出界面中選擇libsqlite3.dylib或libsqlite3.0.dylib,再在彈出的對話框中點擊Add按鈕添加即可,如下圖所示。
? ? ? ?在NoteDAO文件中,相關屬性和createEditableCopyOfDatabaseIfNeeded方法的代碼如下所示:
? ? ??上述代碼中第①行用于聲明C指針類型變量db,在Swift版本中需要聲明為COpaquePointer類型。第②行代碼用于將NSString類型轉換為C接受的是char*類型數據。
? ? ??本文僅限內部技術人員學習交流,不得作于其他商業用途.希望此文對廣大技人員有所幫助。文章出自:南昌APP開發公司-百恒網絡:http://1e2r.com
? ? ? ?第③行代碼用于打開數據庫,其中sqlite3_open函數的第一個參數是數據庫文件的完整路徑。需要注意的是,在這個函數中,接受的是char*類型的數據;第二個參數為sqlite3指針變量db的地址;返回值是int類型。在SQLite3中,我們定義了很多常量,如果返回值等于常量SQLITE_OK,則說明創建成功。
? ? ? ?如果數據庫打開失敗,則需要關閉數據庫(見第④行代碼),并拋出異常(見第⑤行代碼)。
? ? ? ?如果數據庫成功打開,則需要創建數據庫中的表,其中第⑥行代碼是建表的SQL語句,當表Note不存在時創建,否則不創建。第⑦行代碼是將NString類型轉換為C所接受的是char*類型的數據。
? ? ? ?第⑧行中的sqlite3_exec函數用于執行SQL語句,該函數的第一個參數是sqlite3指針變量db的地址,第二個參數是要執行的SQL語句,第三個參數是要回調的函數,第四個參數是要回調函數的參數,第五個參數是執行出錯的字符串。
? ? ? ?最后,數據操作執行完成,要通過sqlite3_close函數釋放資源。代碼中多次使用了該函數,當數據庫打開失敗、SQL語句執行失敗,以及執行成功時等都會調用。原則上,無論正常結束還是異常結束,必須使用sqlite3_close函數釋放資源。