iOS-Swift之用OHMySQL框架直连MySQL数据库并进行数据操作

摘要:网上查询OHMySQL,大多是用OC语言写的例子,我现在写一个swift的例子。另,很多文章都说到APP直连数据库是不安全的。

PS:安装OHMySQL我是用CocoPods快速导入的,在Podfile文件中加上 pod 'OHMySQL' ,然后在项目路径运行 pod install 指令即可,没安装CocoPods移步到:https://blog.csdn.net/amberoot/article/details/84108073。MySQL的安装也请另行百度,网上很多。这里附上OHMySQL的GitHub地址是:https://github.com/oleghnidets/OHMySQL

 

一、我的做法是先初始化需要的变量

    //初始化OHMySQL协调器
     var coordinator = OHMySQLStoreCoordinator()

    //初始化上下文
    let context = OHMySQLQueryContext()
    let dbName = "Task1"//数据库模块名称
    let tableName = "Login"//表名
   ///MySQL Server
   let SQLUserName = "root"//数据库用户名
   let SQLPassword = "123456"//数据库密码

   //数据库名称,如果是用模拟器连接电脑本地数据库,默认是localhost;若用iPhone或iPad远程连接数据库,数据库名称填写其IP地址
   let SQLServerName = "localhost"
   let SQLServerPort: UInt = 3306//数据库端口号,默认是3306

 

二、连接MySQL

///初始化用户
//mac本地socket为/tmp/mysql.sock,远程连接socket直接为nil即可
let user = OHMySQLUser(userName: SQLUserName, password: SQLPassword, serverName: SQLServerName, dbName: dbName, port: SQLServerPort, socket: nil)

coordinator = OHMySQLStoreCoordinator(user: user!)
coordinator.encoding = .UTF8MB4//编码方式
coordinator.connect()//连接数据库
coordinator.disconnect()//与数据库断开连接

 

三、判断数据库连接状态       

//判断是否成功数据库
let sqlConnected: Bool = coordinator.isConnected
//连接成功后保存协调器到当前的上下文,即可不用每次操作数据库都要重新连接
context.storeCoordinator = coordinator
//也可ping服务器查询连接状态
switch coordinator.pingMySQL() {
        case .none:
            //数据库连接成功
            break
        case .sync:
            //命令以错误的顺序执行
            break
        case .gone:
            //MySQL服务器已经丢失
            break
        case .lost:
            //与服务器的连接丢失
            break
        case .unknown:
            //未知错误
            break
        }

三、增删改查

           "Login"表格如下,有username和password两列

usernamepassword
amberoot000
amberoot1123
amberoot233

下面是查询和增、删、改操作的请求

//SELECT - 查询
let query = OHMySQLQueryRequestFactory.select(tableName, condition: "username = 'amberoot'")

//INSERT - 增
let query2 = OHMySQLQueryRequestFactory.insert(tableName, set: ["username": "amberoot2", "password": "33"])

//DELETE - 删
let query3 = OHMySQLQueryRequestFactory.delete(tableName, condition: "username = 'amberoot'")

//UPDATE - 改
let query4 = OHMySQLQueryRequestFactory.update(tableName, set: ["password": "10000"], condition: "username = 'amberoot2'")

 

下面是执行请求操作(查询的请求会返回的数据格式为[[String:Any]])         

 do {
     //查询
     let response = try context.executeQueryRequestAndFetchResult(query)
     print("response:\(response as Any)")

     //增、删、改
     try context.execute(query2)
     try context.execute(query3)
     try context.execute(query4)   
             
  }catch {
      print("MySQL_Error:\(error)")
 }

 

 

 

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值