一、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
}
执行结果:


由此可见,已经成功添加了自己写的一组数据在数据库里。
仓颉连接MySQL数据库教程
1191

被折叠的 条评论
为什么被折叠?



