如何在 iPhone 上訪問 SQLite 資料庫例項
在設計任何應用程式時,儲存資料是最重要的事情之一。有許多方法可以儲存資料,其中一種方法是 SQLite 資料庫。
有多種方法可以訪問 iPhone 上的 SQLite 資料庫,我們將使用 Swift 檢視最簡單的方法。
SQLite 是一種關係型資料庫管理系統,包含在嵌入到應用程式中的 C 程式設計庫中。
在本教程中,我們將建立一個示例應用程式,該應用程式將包含一個文字欄位以輸入名稱,我們將名稱儲存在我們的 SQLite 資料庫中,並在使用者點選“顯示”按鈕時列印相同的名稱。
那麼,讓我們開始吧
步驟 1 − 開啟 Xcode -→ 單檢視應用程式 -→ 我們將其命名為 DBSqlite。
步驟 2 − 讓我們開發我們的 UI,開啟 Main.storyboard 並新增一個文字欄位和兩個按鈕,如下所示。
步驟 3 − 為兩個按鈕建立 @IBAction,為文字欄位建立 @IBOutlet,並分別將其命名為 btnInsert、btnShowData 和 name。

因此,我們添加了兩個按鈕,一個用於插入資料,另一個用於顯示資料。我們還建立了一個文字欄位,我們可以在其中輸入要插入資料庫的名稱。
步驟 4 − 讓我們建立我們的 SQLite 檔案並開啟資料庫連線。
在 ViewController.swift 中編寫
匯入 SQLite3
在 ViewDidLoad 下編寫以下程式碼,它將建立一個 .sqlite 檔案,我們可以列印其建立位置。我們將我們的 sqlite 檔案命名為“user_name.sqlite”,因為我們只打算插入名稱。
let file_URL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("user_name.sqlite")現在我們將使用 sqlite3_open() 函式開啟資料庫。
建立一個 OpaquePointer 物件。我們將將其用於操作。在 ViewDidLoad 之上,全域性建立此變數。
var db: OpaquePointer?
步驟 5 − 現在讓我們建立表格,要在 viewDidLoad 方法中建立表格,請編寫以下程式碼。
//creating table
if sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)", nil, nil, nil) != SQLITE_OK {
let errorMsg = String(cString: sqlite3_errmsg(db)!)
print("There's error creating the table: \(errorMsg)")
}步驟 5 之後,您的最終程式碼應如下所示。
import UIKit
import SQLite3
class ViewController: UIViewController {
var db: OpaquePointer?
@IBOutlet var name: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
let file_URL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
.appendingPathComponent("user_name.sqlite")
print (file_url) //to print the path of sqlite.
//opening the database
if sqlite3_open(file_URL.path, &db) != SQLITE_OK {
print("There's error in opening the database")
}
//create table
if sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)", nil, nil, nil) != SQLITE_OK {
let errorMsg = String(cString: sqlite3_errmsg(db)!)
print("There's error creating the table: \(errorMsg)")
}
}
@IBAction func btnInsert(_ sender: Any) {
}
@IBAction func btnShowData(_ sender: Any) {
}
}執行以上程式碼,您應該不會收到任何錯誤,透過導航到該位置檢查 sqlite 檔案。
步驟 6 − 現在我們將編寫插入資料的程式碼,所以在 btnInsert 中編寫以下程式碼
var statement: OpaquePointer?
guard let user_name = name.text, !user_name.isEmpty else {
return
}
let query = "INSERT INTO users (name) VALUES (?)"
if sqlite3_prepare(db, query, -1, &statement, nil) != SQLITE_OK {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}
if sqlite3_bind_text(statement, 1, user_name, -1, nil) != SQLITE_OK {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("failure binding name: \(errmsg)")
return
}
if sqlite3_step(statement) != SQLITE_DONE {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("failure inserting users: \(errmsg)")
return在這裡,我們只是將文字欄位中的值寫入我們的表格。
步驟 7 − 現在我們應該顯示資料,在 btnShowData 中編寫以下程式碼
let query = "SELECT * FROM users"
var statement:OpaquePointer?
if sqlite3_prepare(db, query, -1, &statement, nil) != SQLITE_OK {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}
while(sqlite3_step(statement) == SQLITE_ROW) {
let name = String(cString: sqlite3_column_text(statement, 1))
print(name)
}您的最終程式碼應如下所示
import UIKit
import SQLite3
class ViewController: UIViewController {
var db: OpaquePointer?
@IBOutlet var name: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
let file_URL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
.appendingPathComponent("user_name.sqlite")
//opening the database
if sqlite3_open(file_URL.path, &db) != SQLITE_OK {
print("There's error in opening the database")
}
//creating table
if sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)", nil, nil, nil) != SQLITE_OK {
let errorMsg = String(cString: sqlite3_errmsg(db)!)
print("There's error creating the table: \(errorMsg)")
}
}
@IBAction func btnInsert(_ sender: Any) {
var statement: OpaquePointer?
guard let user_name = name.text, !user_name.isEmpty else {
return
}
let query = "INSERT INTO users (name) VALUES (?)"
if sqlite3_prepare(db, query, -1, &statement, nil) != SQLITE_OK {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}
if sqlite3_bind_text(statement, 1, user_name, -1, nil) != SQLITE_OK {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("failure binding name: \(errmsg)")
return
}
if sqlite3_step(statement) != SQLITE_DONE {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("failure inserting users: \(errmsg)")
return
}
}
@IBAction func btnShowData(_ sender: Any) {
let query = "SELECT * FROM users"
var statement:OpaquePointer?
if sqlite3_prepare(db, query, -1, &statement, nil) != SQLITE_OK {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}
while(sqlite3_step(statement) == SQLITE_ROW) {
let name = String(cString: sqlite3_column_text(statement, 1))
print(name)
}
}
}現在我們將執行程式碼並檢視輸入名稱 HELLO 並點選插入。然後點選顯示,您將在 Xcode 的偵錯程式區域的輸出中看到打印出的 HELLO。


資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP