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

版权声明:本文为博主原创文章,转载请说明出处:http://blog.csdn.net/amberoot https://blog.csdn.net/amberoot/article/details/84984860

摘要:网上查询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

        //初始化用户      

        let user = OHMySQLUser(userName: SQLUserName, password: SQLPassword, serverName: SQLServerName, dbName: dbName, port: SQLServerPort, socket: nil)//mac本地socket为/tmp/mysql.sock,远程连接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两列

username password
amberoot 000
amberoot1 123
amberoot2 33

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

            //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)")

            }

猜你喜欢

转载自blog.csdn.net/amberoot/article/details/84984860