跟我一起学“仓颉Web”基础编程-单表增删改查
·
目录
在正式使用仓颉编程语言和mariadb-driver驱动操作数据库时,声明一下,本系列文章,操作的数据库是MySQL 8.0.46版本,为避免后续操作因为数据库版本不同所带来的不必要麻烦,建议小白或者基础较弱的友友们保持与我统一的版本,该数据库的下载连接:MySQL,MySQL数据库的安装,这里就不作过多赘述,接下来看看仓颉项目里是如何使用驱动连接数据库的。
一、数据库连接
创建数据库
create database web_study;
use web_study;
创建数据表
CREATE TABLE `student` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`age` int DEFAULT NULL,
`sex` int DEFAULT NULL,
`grade` int DEFAULT NULL,
PRIMARY KEY (`id`)
);
核心代码
package Web
import std.database.sql.*
import mariadb.cdbc.*
main(): Unit {
// 创建驱动
let driver = DriverManager.getDriver('mariadb').getOrThrow()
// 数据库的链接
let url = 'mariadb://127.0.0.1:3306'
// 数据库用户
let username = ('username', 'root')
// 数据库密码
let password = ('password', 'YGBG372S1')
// 需要连接数据库
let database = ('database', 'web_study')
// 启动驱动获取数据资源
let dataSource = driver.open(url, [username, password, database])
// 创建连接
let connection = dataSource.connect()
println("数据库连接成功!")
// 注意释放顺序
// 释放连接资源
connection.close()
// 释放数据资源
dataSource.close()
}
运行结果

注意:虽然“import mariadb.cdbc.*”在我们自己的项目里为未使用状态,但是在驱动内部,该引用被使用了,所以这个导包不能删除。
二、新增
核心代码
package Web
import std.database.sql.*
import mariadb.cdbc.*
main(): Unit {
// 创建驱动
let driver = DriverManager.getDriver('mariadb').getOrThrow()
// 数据库的链接
let url = 'mariadb://127.0.0.1:3306'
// 数据库用户
let username = ('username', 'root')
// 数据库密码
let password = ('password', 'YGBG372S1')
// 需要连接数据库
let database = ('database', 'web_study')
// 启动驱动获取数据资源
let dataSource = driver.open(url, [username, password, database])
// 创建连接
let connection = dataSource.connect()
println('数据库连接成功!')
// 新增数据
let statemnt = connection.prepareStatement('insert into student (id, name, age, sex, grade) values (?, ?, ?, ?, ?)')
// 注意类型需要和数据库里面的类型保持一致
statemnt.set(1, 1)
statemnt.set(2, '小白')
statemnt.set(3, 20)
statemnt.set(4, 1)
statemnt.set(5, 1)
// 更新数据库,返回数据库的影响行数
let row = statemnt.update()
println('影响行数: ${row.rowCount}')
// 注意释放顺序
// 释放新增
statemnt.close()
// 释放连接资源
connection.close()
// 释放数据资源
dataSource.close()
}
运行结果

数据库结果

注意:因为学生表的主键我们设置了自增,因此,在后面添加数据时,代码里不写主键也是可以的。
运行结果

数据库结果

三、删除
核心代码
package Web
import std.database.sql.*
import mariadb.cdbc.*
main(): Unit {
// 创建驱动
let driver = DriverManager.getDriver('mariadb').getOrThrow()
// 数据库的链接
let url = 'mariadb://127.0.0.1:3306'
// 数据库用户
let username = ('username', 'root')
// 数据库密码
let password = ('password', 'YGBG372S1')
// 需要连接数据库
let database = ('database', 'web_study')
// 启动驱动获取数据资源
let dataSource = driver.open(url, [username, password, database])
// 创建连接
let connection = dataSource.connect()
println('数据库连接成功!')
// 删除数据
let name = '小黑'
let statemnt = connection.prepareStatement('delete from student where name=?')
statemnt.set(1, name)
// 更新数据库,返回数据库的影响行数
let row = statemnt.update()
println('影响行数: ${row.rowCount}')
// 注意释放顺序
// 释放新增
statemnt.close()
// 释放连接资源
connection.close()
// 释放数据资源
dataSource.close()
}
运行结果

数据库结果

四、修改
核心代码
package Web
import std.database.sql.*
import mariadb.cdbc.*
main(): Unit {
// 创建驱动
let driver = DriverManager.getDriver('mariadb').getOrThrow()
// 数据库的链接
let url = 'mariadb://127.0.0.1:3306'
// 数据库用户
let username = ('username', 'root')
// 数据库密码
let password = ('password', 'YGBG372S1')
// 需要连接数据库
let database = ('database', 'web_study')
// 启动驱动获取数据资源
let dataSource = driver.open(url, [username, password, database])
// 创建连接
let connection = dataSource.connect()
println('数据库连接成功!')
// 修改数据
let name = '白小黑'
let age = 18
let id = 1
let statemnt = connection.prepareStatement('update student set name=?, age=? where id=?')
statemnt.set(1, name)
statemnt.set(2, age)
statemnt.set(3, id)
// 更新数据库,返回数据库的影响行数
let row = statemnt.update()
println('影响行数: ${row.rowCount}')
// 注意释放顺序
// 释放新增
statemnt.close()
// 释放连接资源
connection.close()
// 释放数据资源
dataSource.close()
}
运行结果

数据库结果

五、查询
核心代码
package Web
import std.database.sql.*
import mariadb.cdbc.*
main(): Unit {
// 创建驱动
let driver = DriverManager.getDriver('mariadb').getOrThrow()
// 数据库的链接
let url = 'mariadb://127.0.0.1:3306'
// 数据库用户
let username = ('username', 'root')
// 数据库密码
let password = ('password', 'YGBG372S1')
// 需要连接数据库
let database = ('database', 'web_study')
// 启动驱动获取数据资源
let dataSource = driver.open(url, [username, password, database])
// 创建连接
let connection = dataSource.connect()
println('数据库连接成功!')
// 查询数据
let statemnt = connection.prepareStatement("select * from student")
// 获取结果集
let resultSet = statemnt.query()
while (resultSet.next()) {
let id = resultSet.get<Int64>(1)
let name = resultSet.get<String>(2)
let age = match (resultSet.getOrNull<Int64>(3)) {
case Some(v) => v
case None => 0
}
let sex = if (resultSet.getOrNull<Int64>(4) == 1) {'男'} else {'女'}
let grade = match (resultSet.getOrNull<Int64>(5)) {
case Some(1) => '大一'
case Some(2) => '大二'
case Some(3) => '大三'
case Some(4) => '大四'
case _ => '无'
}
println('编号: ${id}, 姓名:${name}, 年龄: ${age}, 性别: ${sex}, 年级: ${grade}')
}
// 注意释放顺序
// 释放结果集
resultSet.close()
// 释放新增
statemnt.close()
// 释放连接资源
connection.close()
// 释放数据资源
dataSource.close()
}
运行结果

六、小结
本章为大家详细的介绍了单表增删改查的内容,下一章为大家介绍多表查询和事务的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉Web基础编程有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!
更多推荐



所有评论(0)