仓颉连接MySQL数据库(0.53版本)

仓颉连接MySQL数据库教程

一、VSCode配置

1.在工程目录下导入mysqlclient-ffi驱动文件

2.在cjpm.toml里添加依赖

[target.x86_64-w64-mingw32] 
  compile-option = "-O0 -Woff all"
  link-option = "-lmysqlclient -lmysqlclient_cj -lmysqlclient_ffi"
  [target.x86_64-w64-mingw32.bin-dependencies] # 仓颉二进制库依赖
    path-option = ["./mysqlclient-ffi/target/release", "./mysqlclient-ffi/target/release/mysqlclient_ffi"]

二、开始连接数据库

1.连接上MySQL数据库

        导入包import mysqlclient-ffi.*import std.database.*

import mysqlclient_ffi.*
import std.database.sql.*
main(): Int64 {
    //加载数据库驱动
    let mysqlDriver : MysqlDriver = MysqlDriver("mysql")
    //创建一个数组
    let arr : Array<(String,String)> = Array<(String,String)>()
    //获取数据源
    let dataSource : MysqlDatasource = mysqlDriver.open("HOST=127.0.0.1;USER=root;PASSWD=123456;DB=ny2025;PORT=3306;UNIX_SOCKET=;CLIENT_FLAG=0",arr)
    //获取一个返回的连接对象
    let connection = dataSource.connect()
    println("连接成功")
    return 0
}

结果为:

注意:HOST为127.0.0.1,PASSWORD为下载MySQL数据库时设置的密码,PORT为3306。

2.通过面向对象对连接数据库进行封装

public class DataBase{
    let mysqlDriver : MysqlDriver
    let dataSource : MysqlDatasource
    let connection : MysqlConnection
    let  arr : Array<(String,String)>  = Array<(String,String)>()
    public DataBase()
    {
        mysqlDriver = MysqlDriver("mysql")
        dataSource = mysqlDriver.open("HOST=127.0.0.1;USER=root;PASSWD=password;DB=guizhou;PORT=3306;UNIX_SOCKET=;CLIENT_FLAG=0",arr)
        connection = dataSource.connect()
        println("连接成功")
    }
}

将连接数据库的属性在构造函数中完成初始化,创建对象时自动调用构造函数以连接数据库。

3.查询表中的数据

现在表中有这些数据:

表中有title,img,content三个字段,现在将他们查询出来并在控制台打印。

先根据这三个字段创建一个类,类里面的属性包含这三个属性,方便解析。

public class Data1{
    public var title : String = ""
    public var img : String = ""
    public var content : String = ""
    public Data1(title:String,img:String,content:String)
    {
        this.title = title
        this.img = img
        this.content = content
    }
}

接着开始查询:

public class DataBase{
    let mysqlDriver : MysqlDriver
    let dataSource : MysqlDatasource
    let connection : MysqlConnection
    let  arr : Array<(String,String)>  = Array<(String,String)>()
    public DataBase()
    {
        mysqlDriver = MysqlDriver("mysql")
        dataSource = mysqlDriver.open("HOST=127.0.0.1;USER=root;PASSWD=password;DB=guizhou;PORT=3306;UNIX_SOCKET=;CLIENT_FLAG=0",arr)
        connection = dataSource.connect()
        println("连接成功")
    }
    public func queryData(): ArrayList<Data1>
    {
        let sql = "select * from g_info"
        var stmt = connection.prepareStatement(sql)
        var res = stmt.query()
        let arrDb : Array<SqlDbType> = [SqlVarchar(""),SqlVarchar(""),SqlVarchar("")]
        var list = ArrayList<Data1>()
        var isBool = res.next(arrDb)
        while(isBool)
        {
            let title = (arrDb[0] as SqlVarchar).getOrThrow().value
            let img = (arrDb[1] as SqlVarchar).getOrThrow().value
            let content = (arrDb[2] as SqlVarchar).getOrThrow().value
            isBool = res.next(arrDb)
            var data1 = Data1(title,img,content)
            list.append(data1)
        }
        return list
    }
}

查询结果:

4.向表中添加数据

public func addData(title:String,img:String,content:String)
    {
        let sql = "insert into g_info values(?,?,?)"
        var stmt = connection.prepareStatement(sql)
        var dataTitle : SqlVarchar = SqlVarchar(title)
        var dataImg : SqlVarchar = SqlVarchar(img)
        var dataContent : SqlVarchar = SqlVarchar(content)
        var arrDb : Array<SqlDbType> = [dataTitle,dataImg,dataContent]
        stmt.update(arrDb)
        println("执行成功")
    }
main(): Int64 {
    var db = DataBase()
    db.addData("发展概述","https://eddfdsfdds","贵州正以飞快的速度发展")
    return 0
}

执行结果:

由此可见,已经成功添加了自己写的一组数据在数据库里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值