आप इस लाइब्रेरी का उपयोग स्विफ्ट में SQLite https://github.com/pmurphyjam/SQLiteDemo के लिए कर सकते हैं
SQLiteDemo
SQLite डेमो का उपयोग स्विफ्ट SQLDataAccess वर्ग स्विफ्ट में लिखा है
अपने प्रोजेक्ट में जोड़ना
आपको अपने प्रोजेक्ट में जोड़ने के लिए केवल तीन फाइलों की आवश्यकता है * SQLDataAccess.swift * DataConstants.swift * ब्रिजिंग-हेडर। ब्रिजिंग-हेडर को आपके स्विफ्ट कंपाइलर - जनरल 'के तहत आपके Xcode के प्रोजेक्ट' ऑब्जेक्टिव-सी ब्रिजिंग हेडर 'में सेट किया जाना चाहिए।
उपयोग के लिए उदाहरण
SQLDataAccess.swift के साथ सरल एसक्यूएल लिखने के तरीके को देखने के लिए बस ViewController.swift में कोड का पालन करें। सबसे पहले आपको अपने साथ काम करने वाले SQLite डेटाबेस को खोलने की आवश्यकता है
let db = SQLDataAccess.shared
db.setDBName(name:"SQLite.db")
let opened = db.openConnection(copyFile:true)
यदि ओपनकॉइन सफल हुआ, तो अब आप टेबल ऐपइन्फो में एक साधारण इंसर्ट कर सकते हैं
//Insert into Table AppInfo
let status = db.executeStatement("insert into AppInfo (name,value,descrip,date) values(?,?,?,?)",
”SQLiteDemo","1.0.2","unencrypted",Date())
if(status)
{
//Read Table AppInfo into an Array of Dictionaries
let results = db.getRecordsForQuery("select * from AppInfo ")
NSLog("Results = \(results)")
}
देखो कितना सरल था!
Db.executeStatement में पहला पद स्ट्रिंग के रूप में आपकी एसक्यूएल है, जो सभी शर्तों का पालन करती हैं वे किसी भी प्रकार की एक वैरिएड तर्क सूची हैं, और एक ऐरे में आपके पैरामीटर हैं। ये सभी शर्तें SQL तर्कों की आपकी सूची में अल्पविराम से अलग हो जाती हैं। आप सीक्वल स्टेटमेंट के ठीक बाद स्ट्रिंग्स, इंटेगर, डेट और ब्लब्स में प्रवेश कर सकते हैं क्योंकि इन सभी को सीक्वल के लिए पैरामीटर माना जाता है। वैरिएड तर्क सरणी सिर्फ एक निष्पादित या getRecordsForQuery कॉल में अपने सभी अगली कड़ी में प्रवेश करने के लिए सुविधाजनक बनाता है। यदि आपके पास कोई पैरामीटर नहीं है, तो अपने SQL के बाद कुछ भी दर्ज न करें।
परिणाम सरणी एक सरणी का शब्दकोश है जहाँ 'कुंजी' आपके टेबल कॉलम का नाम है, और 'वैल्यू' आपका डेटा SQLite द्वारा प्राप्त किया गया है। आप आसानी से लूप के लिए इस सरणी के माध्यम से पुनरावृत्ति कर सकते हैं या इसे सीधे प्रिंट कर सकते हैं या इन डेटा तत्वों को कस्टम डेटा ऑब्जेक्ट क्लासेस को असाइन कर सकते हैं जो आप मॉडल खपत के लिए अपने व्यू कंट्रोलर्स में उपयोग करते हैं।
for dic in results as! [[String:AnyObject]] {
print(“result = \(dic)”)
}
SQLDataAccess स्टोर करेगा, पाठ, डबल, फ्लोट, बूँद, दिनांक, पूर्णांक और लंबे लंबे पूर्णांक। ब्लब्स के लिए आप बाइनरी, वार्बिनरी, ब्लॉब स्टोर कर सकते हैं।
Text के लिए आप char, character, clob, national varying character, native character, nchar, nvarchar, varchar, variant, varying character, text स्टोर कर सकते हैं।
डेट्स के लिए आप डेटाइम, टाइम, टाइमस्टैम्प, डेट स्टोर कर सकते हैं।
Integers के लिए आप bigint, bit, bool, boolean, int2, int8, integer, mediumint, smallint, smallint, int स्टोर कर सकते हैं।
डबल्स के लिए आप दशमलव, डबल परिशुद्धता, फ्लोट, न्यूमेरिक, रियल, डबल स्टोर कर सकते हैं। डबल में सबसे अधिक सटीकता है।
तुम भी नल के नल की दुकान कर सकते हैं।
ViewController.swift में एक और जटिल उदाहरण दिखाया गया है कि कैसे एक शब्दकोश को 'बूँद' के रूप में सम्मिलित किया जाए। इसके अलावा SQLDataAccess देशी स्विफ्ट दिनांक () को समझता है ताकि आप इन वस्तुओं को परिवर्तित करने के साथ सम्मिलित कर सकें, और यह उन्हें पाठ में परिवर्तित करेगा और उन्हें संग्रहीत करेगा, और जब पुनर्प्राप्त किया जाएगा तो उन्हें पाठ से दिनांक में परिवर्तित कर सकते हैं।
बेशक SQLite की असली शक्ति यह लेनदेन क्षमता है। यहाँ आप वस्तुतः 400 SQL कथनों को मापदंडों के साथ पंक्तिबद्ध कर सकते हैं और उन सभी को एक साथ सम्मिलित कर सकते हैं जो वास्तव में बहुत शक्तिशाली है क्योंकि यह बहुत तेज़ है। ViewController.swift आपको यह कैसे करना है, इसका एक उदाहरण भी दिखाता है। आप जो वास्तव में कर रहे हैं, वह 'sqlAndParams' नामक शब्दकोशों का एक सरणी बना रहा है, इस स्ट्रिंग में अपने कुंजीशब्दों को दो कुंजी 'SQL' के साथ स्ट्रिंग सीक्वल स्टेटमेंट या क्वेरी के लिए, और 'PARAMS' जो केवल देशी वस्तुओं का एक सरणी है, SQLite बनाएँ उस क्वेरी के लिए समझता है। प्रत्येक 'sqlParams' जो सीक्वेल क्वेरी प्लस मापदंडों का एक व्यक्तिगत शब्दकोश है, फिर 'sqlAndParams' एरे में संग्रहीत किया जाता है। एक बार जब आप यह सरणी बना लेते हैं, तो आप कॉल करते हैं।
let status = db.executeTransaction(sqlAndParams)
if(status)
{
//Read Table AppInfo into an Array of Dictionaries for the above Transactions
let results = db.getRecordsForQuery("select * from AppInfo ")
NSLog("Results = \(results)")
}
इसके अलावा सभी निष्पादन योग्य और getRecordsForQuery तरीके SQL क्वेरी के लिए सरल स्ट्रिंग और क्वेरी द्वारा आवश्यक पैरामीटर के लिए एक सरणी के साथ किया जा सकता है।
let sql : String = "insert into AppInfo (name,value,descrip) values(?,?,?)"
let params : Array = ["SQLiteDemo","1.0.0","unencrypted"]
let status = db.executeStatement(sql, withParameters: params)
if(status)
{
//Read Table AppInfo into an Array of Dictionaries for the above Transactions
let results = db.getRecordsForQuery("select * from AppInfo ")
NSLog("Results = \(results)")
}
एक ऑब्जेक्टिव-सी संस्करण भी मौजूद है और इसे उसी SQLDataAccess कहा जाता है, इसलिए अब आप ऑब्जेक्टिव-सी या स्विफ्ट में अपना सीक्वल लिखना चुन सकते हैं। इसके अलावा SQLDataAccess SQLCipher के साथ भी काम करेगा, वर्तमान कोड इसके साथ काम करने के लिए अभी तक सेटअप नहीं है, लेकिन यह करना बहुत आसान है, और यह कैसे करना है इसका एक उदाहरण SQLDataAccess के Objective-C संस्करण में वास्तव में है।
SQLDataAccess एक बहुत तेज़ और कुशल वर्ग है, और इसका उपयोग CoreData के स्थान पर किया जा सकता है जो वास्तव में SQLite का उपयोग करता है क्योंकि यह CoreData के साथ आने वाले सभी CoreData कोर डेटा अखंडता दोष क्रैश के बिना अंतर्निहित डेटा स्टोर है।