Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> iOS

iPhone पर SQLite डेटाबेस इंस्टेंस कैसे एक्सेस करें


किसी भी एप्लिकेशन को डिजाइन करते समय डेटा स्टोर करना सबसे महत्वपूर्ण चीजों में से एक है। डेटा स्टोर करने के कई तरीके हैं, उनमें से एक SQLite डेटाबेस है।

iPhone पर SQLite डेटाबेस एक्सेस करने के तरीके

iPhone पर SQLite डेटाबेस एक्सेस करने के कई तरीके हैं, हम Swift में ऐसा करने का सबसे आसान तरीका देखेंगे।

SQLite एक रिलेशनल डेटाबेस मैनेजमेंट सिस्टम है जो C प्रोग्रामिंग लाइब्रेरी में समाहित है और एप्लिकेशन में एम्बेडेड है।

ट्यूटोरियल: सैंपल ऐप बनाएं

इस ट्यूटोरियल में हम एक सैंपल एप्लिकेशन बनाएंगे जिसमें नाम दर्ज करने के लिए एक टेक्स्ट फील्ड होगा, हम नाम को अपने SQLite डेटाबेस में स्टोर करेंगे और जब यूजर शो बटन पर टैप करेगा तो वही प्रिंट करेंगे।

चरण 1: प्रोजेक्ट बनाएं

Xcode खोलें → Single View Application → नाम दें "DBSqlite"

चरण 2: UI विकसित करें

Main.storyboard खोलें और नीचे दिखाए अनुसार एक टेक्स्ट फील्ड और दो बटन जोड़ें।

iPhone पर SQLite डेटाबेस इंस्टेंस कैसे एक्सेस करें

चरण 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 प्रिंट होता हुआ दिखाई देगा।

iPhone पर SQLite डेटाबेस इंस्टेंस कैसे एक्सेस करें iPhone पर SQLite डेटाबेस इंस्टेंस कैसे एक्सेस करें

  1. गाइडेड एक्सेस कैसे आपके iPhone को सुरक्षित रखता है: फीचर्स, लाभ और सेटअप गाइड गाइडेड एक्सेस कैसे आपके iPhone को सुरक्षित रखता है: फीचर्स, लाभ और सेटअप गाइड

    जब आप अपना Apple iPhone किसी को सौंपते हैं, तो आप उन्हें इधर-उधर ताक-झांक करने या उन क्षेत्रों में भटकने का जोखिम उठाते हैं जहां उन्हें नहीं जाना चाहिए। यहीं पर गाइडेड एक्सेस स्थिति बचा सकता है। जानें कि गाइडेड एक्सेस क्या है और अपने iPhone पर इसका उपयोग कैसे करें। iPhone पर गाइडेड एक्सेस क्या है?

  1. iPhone फोटो एल्बम का नाम जल्दी और आसानी से बदलें: चरण-दर-चरण गाइड iPhone फोटो एल्बम का नाम जल्दी और आसानी से बदलें: चरण-दर-चरण गाइड

    क्या आपका iPhone फोटो और एल्बम से भरा है? कभी-कभी आपको पहले नाम दिए गए एल्बम को पहचानना मुश्किल हो सकता है। जब भी आप अपने iPhone गैलरी पर एक एल्बम बनाते हैं तो यह आपसे एक नाम मांगता है। लेकिन ऐसे समय होते हैं जब आप गलती से गलत नाम दर्ज कर देते हैं और बदलाव करना चाहते हैं। यह भी पढ़ें: अपने iPhone की

  1. मिनटों में अपने आईफोन का ब्लूटूथ नाम बदलें मिनटों में अपने आईफोन का ब्लूटूथ नाम बदलें

    सभी स्मार्टफोन में डिवाइस निर्माताओं द्वारा ब्लूटूथ तकनीक शामिल की गई है। भले ही ऐपल अपने डिवाइस के बीच ब्लूटूथ के माध्यम से डेटा ट्रांसफर की सुविधा नहीं देता, फिर भी, यह सभी स्मार्टफोन में एक महत्वपूर्ण विशेषता है। ब्लूटूथ तकनीक का उपयोग ऑडियो, वीडियो और फोटो को स्पीकर या स्मार्ट टीवी जैसे किसी अन्