[Swift通天遁地]七、数据与安全-(5)使用开源类库对SQLite数据库进行高效 *** 作

[Swift通天遁地]七、数据与安全-(5)使用开源类库对SQLite数据库进行高效 *** 作,第1张

概述本文将演示使用开源类库对SQLite数据库进行高效 *** 作。 首先确保在项目中已经安装了所需的第三方库。 点击【Podfile】,查看安装配置文件。 1 platform :ios, ‘12.0’2 use_frameworks!3 4 target ‘DemoApp‘ do5 source ‘https://github.com/CocoaPods/Specs.git‘6

本文将演示使用开源类库对sqlite数据库进行高效 *** 作。

首先确保在项目中已经安装了所需的第三方库。

点击【Podfile】,查看安装配置文件。

1 platform :ios,‘12.02 use_frameworks!3 4 target DemoApp do5     source https://github.com/CocoaPods/Specs.git6     pod sqlite.swift7 end

根据配置文件中的相关配置,安装第三方库。

在项目导航区,打开视图控制器的代码文件【VIEwController.swift】

依次实现数据库和数据表的创建,以及常见的增、删、改、查等数据库 *** 作。

  1 import UIKit  2 //引入已经安装的第三方类库  3 import sqlite  4   5 class VIEwController: UIVIEwController {  6       7     overrIDe func vIEwDIDLoad() {  8         super.vIEwDIDLoad()  9         // Do any additional setup after loading the vIEw,typically from a nib. 10         //创建数据库和数据表。 11         createtable() 12         //往数据表中插入几条数据 13         insertData() 14         //对数据进行检索 *** 作 15         findRecords() 16         //往数据表中插入几条数据 17         findRecords() 18         //对数据进行检索和更新 *** 作 19         filterandUpdateRecords() 20         //对数据进行删除 *** 作。 21         deleteRecords() 22         //执行SQL语句。 23         executesql() 24     } 25      26     //添加一个方法,用来创建数据库和数据表。 27     func createtable() 28     { 29         //添加一个异常捕捉语句,用来创建数据库和数据表。 30         do 31         { 32             //初始化一个沙箱中的文件路径,作为数据库保存的位置。 33             let path = NSHomeDirectory() + "/documents/db.sqlite3" 34             print(path) 35              36             //根据数据库的路径,初始化一个数据库连接对象。 37             let db = try Connection(path) 38              39             //初始化一个指定名称的数据表 40             let users = table("users") 41             //初始化一个整形常量,作为数据表中的ID字段。 42             let ID = Expression<Int64>("ID") 43             //初始化一个整形常量,作为数据表中的name字段。 44             let name = Expression<String?>("name") 45             //初始化一个整形常量,作为数据表中的email字段。 46             let email = Expression<String>("email") 47              48             //通过调用数据库连接对象的执行命令,创建一张新的数据表。 49             try db.run(users.create { t in 50                 //往数据表中添加一个字段,并设置该字段为数据表的主键。 51                 t.column(ID,primaryKey: true) 52                 //将name字段也添加到数据表中 53                 t.column(name) 54                 //将email字段也添加到数据表中, 55                 //并设置邮箱字段中的数据具有唯一性。 56                 t.column(email,unique: true) 57             }) 58         } 59         catch 60         { 61             print("Something went wrong :(") 62         } 63     } 64      65     //添加一个方法,往数据表中插入几条数据。 66     func insertData() 67     { 68         //添加一个异常捕捉语句,用来执行数据的插入 *** 作。 69         do 70         { 71             //初始化一个字符串常量,作为数据库文件所在的路径。 72             let path = NSHomeDirectory() + "/documents/db.sqlite3" 73             //创建数据库连接对象 74             let db = try Connection(path) 75              76             //创建一个数据表对象 77             let users = table("users") 78             //初始化两个字段,分别表示名称字段和邮箱字段。 79             let name = Expression<String?>("name") 80             let email = Expression<String>("email") 81              82             //往数据表中插入一条记录, 83             //并设置这条记录的两个字段的值。 84             let insert = users.insert(name <- "Alice",email <- "[email protected]") 85             //通过调用数据库连接对象的执行命令,执行数据表插入语句。 86             //并获得返回的记录的唯一标识符。 87             let rowID = try db.run(insert) 88             //在控制台输出记录的唯一标识符。 89             print(">>>>>>>>>>>\(rowID)") 90         } 91         catch 92         { 93             print("Something went wrong :(") 94         } 95     } 96      97     //添加一个方法,对数据进行检索 *** 作 98     func findRecords() 99     {100         //添加一个异常捕捉语句,对数据进行检索 *** 作101         do102         {103             //初始化一个字符串常量,作为数据库文件所在的路径。104             let path = NSHomeDirectory() + "/documents/db.sqlite3"105             //创建数据库连接对象106             let db = try Connection(path)107             //创建一个数据表对象108             let users = table("users")109             110             //初始化三个字段常量111             let ID = Expression<Int64>("ID")112             let name = Expression<String?>("name")113             let email = Expression<String>("email")114             115             //通过调用数据库连接对象的指定方法,获得指定表中的所有记录。116             //并对记录列表进行遍历。117             for user in try db.prepare(users)118             {119                 //在控制台输出记录的各个字段的值120                 print(">>>>>>>ID: \(user[ID]),name: \(String(describing: user[name])),email: \(user[email])")121             }122             123             //通过调用数据库连接对象的指定方法,获得指定表中的所有记录的数量。124             let count = try db.scalar(users.count)125             //并在控制台输出126             print(">>>>>>>\(count)")127         }128         catch129         {130             print("Something went wrong :(")131         }132     }133     134     //添加一个方法,对数据进行检索和更新 *** 作135     func filterandUpdateRecords()136     {137         //添加一个异常捕捉语句,对数据进行检索和更新 *** 作138         do139         {140             //初始化一个字符串常量,作为数据库文件所在的路径。141             let path = NSHomeDirectory() + "/documents/db.sqlite3"142             //创建数据库连接对象143             let db = try Connection(path)144             //创建一个数据表对象145             let users = table("users")146             147             //初始化三个字段常量148             let ID = Expression<Int64>("ID")149             let name = Expression<String?>("name")150             let email = Expression<String>("email")151             152             //通过调用数据库连接对象的过滤方法,查找索引值为1的记录。153             let user = users.filter(ID == 1)154             //通过调用数据库连接对象的执行方法,执行数据表的更新 *** 作。155             //替换索引值为1的记录的邮箱字段中的数据。156             let result = try db.run(user.update(email <- email.replace("strengthen.com",with: "strengthen.net")))157             print(">>>>>>>ID: \(result)")158             159             //再次检索数据表中的所有数据,并通过一个循环。160             for user in try db.prepare(users)161             {162                 //在控制台输出记录的各个字段的值。163                 print(">>>>>>>ID: \(user[ID]),email: \(user[email])")164             }165         }166         catch167         {168             print("Something went wrong :(")169         }170     }171     172     //添加一个方法,对数据进行删除 *** 作。173     func deleteRecords()174     {175         //添加一个异常捕捉语句,执行对数据的删除 *** 作。176         do177         {178             //初始化一个字符串常量,作为数据库文件所在的路径。179             let path = NSHomeDirectory() + "/documents/db.sqlite3"180             //创建数据库连接对象181             let db = try Connection(path)182             //创建一个数据表对象183             let users = table("users")184             185             //初始化一个字段常量186             let ID = Expression<Int64>("ID")187             //通过调用数据库连接对象的过滤方法,查找索引值为1的记录。188             let user = users.filter(ID == 1)189             //通过调用数据库连接对象的执行方法,执行数据表的删除 *** 作。190             let resut = try db.run(user.delete())191             //在控制台输出删除 *** 作的执行结果。192             print(">>>>>>>\(resut)")193             194             //通过调用数据库连接对象的方法,获得指定表中的所有记录的数量。195             let count = try db.scalar(users.count)196             print(">>>>>>>\(count)")197         }198         catch199         {200             print("Something went wrong :(")201         }202     }203     204     //添加一个方法,执行SQL语句。205     func executesql()206     {207         //添加一个异常捕捉语句,执行SQL语句。208         do209         {210             //初始化一个字符串常量,作为数据库文件所在的路径。211             let path = NSHomeDirectory() + "/documents/db.sqlite3"212             //创建数据库连接对象213             let db = try Connection(path)214             //通过调用数据库连接对象的方法,执行一条用来插入的语句。215             let stmt = try db.prepare("INSERT INTO users (email) VALUES (?)")216             //通过一个循环,往数据表中依次插入两个记录。217             for email in ["[email protected]","[email protected]"]218             {219                 try stmt.run(email)220             }221             222             //在控制台输出,数据库连接对象的状态信息。223             print(">>>>>>>\(db.totalChanges)")224             print(">>>>>>>\(db.changes)")225             print(">>>>>>>\(db.lastInsertRowID)")226             227             //通过一条语句,执行一次查询 *** 作,228             for row in try db.prepare("SELECT ID,email FROM users")229             {230                 //查询并输出表中的所有索引值和邮箱信息231                 print(">>>>>>>ID: \(row[0] ?? ""),email: \(row[1] ?? "")")232             }233             234             //执行一条查询所有记录数量的语句235             let result = try db.scalar("SELECT count(*) FROM users")236             //并在控制台输出记录的数量237             print(">>>>>>>\(result ?? 0)")238         }239         catch240         {241             print("Something went wrong :(")242         }243     }244     245     overrIDe func dIDReceiveMemoryWarning() {246         super.dIDReceiveMemoryWarning()247         // dispose of any resources that can be recreated.248     }249 }
总结

以上是内存溢出为你收集整理的[Swift通天遁地]七、数据与安全-(5)使用开源类库对SQLite数据库进行高效 *** 作全部内容,希望文章能够帮你解决[Swift通天遁地]七、数据与安全-(5)使用开源类库对SQLite数据库进行高效 *** 作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1020677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存