किसी भी एप्लिकेशन को डिजाइन करते समय डेटा स्टोर करना सबसे महत्वपूर्ण चीजों में से एक है। डेटा स्टोर करने के कई तरीके हैं, उनमें से एक SQLite डेटाबेस है।
iPhone पर SQLite डेटाबेस एक्सेस करने के तरीके
iPhone पर SQLite डेटाबेस एक्सेस करने के कई तरीके हैं, हम Swift में ऐसा करने का सबसे आसान तरीका देखेंगे।
SQLite एक रिलेशनल डेटाबेस मैनेजमेंट सिस्टम है जो C प्रोग्रामिंग लाइब्रेरी में समाहित है और एप्लिकेशन में एम्बेडेड है।
ट्यूटोरियल: सैंपल ऐप बनाएं
इस ट्यूटोरियल में हम एक सैंपल एप्लिकेशन बनाएंगे जिसमें नाम दर्ज करने के लिए एक टेक्स्ट फील्ड होगा, हम नाम को अपने SQLite डेटाबेस में स्टोर करेंगे और जब यूजर शो बटन पर टैप करेगा तो वही प्रिंट करेंगे।
चरण 1: प्रोजेक्ट बनाएं
Xcode खोलें → Single View Application → नाम दें "DBSqlite"
चरण 2: UI विकसित करें
Main.storyboard खोलें और नीचे दिखाए अनुसार एक टेक्स्ट फील्ड और दो बटन जोड़ें।

चरण 3: IBAction और IBOutlet बनाएं
दोनों बटनों के लिए @IBAction और टेक्स्ट फील्ड के लिए @IBOutlet बनाएं और उन्हें btnInsert, btnShowData और name नाम दें।
चरण 4: SQLite फाइल बनाएं और डेटाबेस कनेक्शन खोलें
ViewController.swift में लिखें:
import 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) // sqlite का पथ प्रिंट करने के लिए
// डेटाबेस खोलना
if sqlite3_open(file_URL.path, &db) != SQLITE_OK {
print("There's error in opening the database")
}
// टेबल बनाना
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")
if sqlite3_open(file_URL.path, &db) != SQLITE_OK {
print("There's error in opening the database")
}
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 प्रिंट होता हुआ दिखाई देगा।
