Java Scala实现数据库增删查改操作详解
作者:你∈我 发布时间:2022-02-03 05:09:22
标签:Java,Scala,增删查改,数据库
添加jar包
这里的Scala不是maven工程所以要找到项目结构(快捷键:同时按住Ctrl+shift+Alt+s)在模块里面添加添加MySQL的jar包,如果是Maven工程可以直接在pom里面直接加即可
实现操作数据库需要两个类,一个用于测试的Demo,一个用于实现增删查改的Util方法
在MysqlDemo在这里需要用到伴生类和伴生对象,伴生类主要是实现连接数据库
class MysqlDemo {
// 连接数据库 底层原理还是jdbc
//驱动名称
var driver = "com.mysql.cj.jdbc.Driver"
// 访问MySQL服务器,通过3306端口访问mysql数据库
var url = "jdbc:mysql://192.168.152.184:3306/exam"
//用户名
var user = "root"
//密码
var password = "123456"
//辅助构造器
def this(driver: String, url: String, user: String, pwd: String) {
this()
this.driver = driver
this.url = url
this.user = user
this.password = pwd
}
}
伴生对象则主要是实现操作数据库 ,需要先实现apply方法,主函数里面创建对象调用apply方法,调用连接方法和释放资源
object MysqlDemo {
// 实现apply方法
def apply(): MysqlDemo = new MysqlDemo()
def apply(driver: String, url: String, user: String, pwd: String): MysqlDemo = new MysqlDemo(driver, url, user, pwd)
def main(args: Array[String]): Unit = {
//创建对象,调用apply方法
val demo = MysqlDemo()
//导入MySQLUtil包
import MysqlUtil._
//调用创建连接的方法
demo.conn()
// 调用释放资源方法
demo.close(connection)
/**操作数据库代码*/
}
Util则需要先初始化数据库连接,注册驱动,得到数据库连接,释放资源
import java.sql.{Connection, DriverManager, PreparedStatement, ResultSet}
object MysqlUtil {
implicit class MysqlOp(obj: MysqlDemo) {
//初始化数据连接
private var connection: Connection = _
def conn(): Connection = {
//注册driver
Class.forName(obj.driver)
//得到数据库连接
val connection: Connection = DriverManager.getConnection(obj.url, obj.user, obj.password)
connection
}
//释放资源
def close(conn: Connection): Unit = {
if (conn != null) {
conn.close()
}
}
}
准备工作已做完下面要实现对数据库的增删查改
添加数据
方法一
//Util代码
//添加数据方法一
def insertStudent: Int = {
val insertSqlStr = "insert into student(name, age, gender, telephone, email, classid)" +
"values ('周七', 6, '男', '13888888888', '346497@qq.com', 2)"
val i: Int = conn().createStatement.executeUpdate(insertSqlStr)
i
}
//Demo测试代码
//添加数据方法一
val i: Int = demo.insertStudent
if (i == 1) {
println("添加成功")
} else if (i == 0) {
println("添加失败")
}
方法二
//Util代码
//添加数据方法二
def insertStudent(name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = {
val insertSqlStr = "insert into student(id,name, age, gender, telephone, email, classid)" +
"values (null,?,?,?,?,?,?)"
val preStmt: PreparedStatement = conn().prepareStatement(insertSqlStr)
preStmt.setString(1, name)
preStmt.setInt(2, age)
preStmt.setString(3, gender)
preStmt.setString(4, telephone)
preStmt.setString(5, email)
preStmt.setInt(6, classid)
val i: Int = preStmt.executeUpdate()
i
}
//Demo测试代码
//添加数据方法二
val i: Int = demo.insertStudent("aaa", 18, "男", "12345678910", "34649756@qq.com", 1)
if (i == 1) {
println("添加成功")
} else if (i == 0) {
println("添加失败")
}
删除数据
//Util代码
def deleteStudent(id: Int): Int = {
val deleteSql = "delete from student where id= ?"
val preStmt: PreparedStatement = conn().prepareStatement(deleteSql)
preStmt.setInt(1, id)
val i: Int = preStmt.executeUpdate()
i
}
//Demo测试代码
val i: Int = demo.deleteStudent(21)
if (i == 1) {
println("删除成功")
} else if (i == 0) {
println("删除失败")
}
查询数据
//Util代码
def selectStudent: Unit = {
val selectSql = "select id,name, age, gender, telephone, email, classid from student"
val rs: ResultSet = conn().createStatement().executeQuery(selectSql)
println("学号\t姓名\t年龄\t性别\t手机号\t邮箱\t班级编号")
while (rs.next()) {
val id: Int = rs.getInt("id")
val name: String = rs.getString("name")
val age: Int = rs.getInt("age")
val gender: String = rs.getString("gender")
val telephone: String = rs.getString("telephone")
val email: String = rs.getString("email")
val classid: String = rs.getString("classid")
println(id + "\t" + name + "\t" + age + "\t" + gender + "\t" + telephone + "\t" + email + "\t" + classid)
}
}
//Demo测试代码
demo.selectStudent
修改数据
//Util代码
def updateStudent(id: Int, name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = {
val updateSql = "update student set name=?," + "age=?, " + "gender=?," +
"telephone=?," + "email=?, " + "classid=? where id=?"
val preStmt: PreparedStatement = conn().prepareStatement(updateSql)
preStmt.setString(1, name)
preStmt.setInt(2, age)
preStmt.setString(3, gender)
preStmt.setString(4, telephone)
preStmt.setString(5, email)
preStmt.setInt(6, classid)
preStmt.setInt(7, id)
val i: Int = preStmt.executeUpdate()
i
}
//Demo测试代码
val i: Int = demo.updateStudent(22, "test", 25, "女", "123456789", "369852@qq.com", 2)
if (i == 1) {
println("修改成功")
} else if (i == 0) {
println("修改失败")
}
完整代码
MysqlUtil代码
import java.sql.{Connection, DriverManager, PreparedStatement, ResultSet}
object MysqlUtil {
implicit class MysqlOp(obj: MysqlDemo) {
//初始化数据连接
private var connection: Connection = _
def conn(): Connection = {
//注册driver
Class.forName(obj.driver)
//得到数据库连接
val connection: Connection = DriverManager.getConnection(obj.url, obj.user, obj.password)
connection
}
//释放资源
def close(conn: Connection): Unit = {
if (conn != null) {
conn.close()
}
}
//添加数据方法一
def insertStudent: Int = {
val insertSqlStr = "insert into student(name, age, gender, telephone, email, classid)" +
"values ('bbb', 6, '男', '13852277346', '3464975236@qq.com', 2)"
val i: Int = conn().createStatement.executeUpdate(insertSqlStr)
i
}
//添加数据方法二
def insertStudent(name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = {
val insertSqlStr = "insert into student(id,name, age, gender, telephone, email, classid)" +
"values (null,?,?,?,?,?,?)"
val preStmt: PreparedStatement = conn().prepareStatement(insertSqlStr)
preStmt.setString(1, name)
preStmt.setInt(2, age)
preStmt.setString(3, gender)
preStmt.setString(4, telephone)
preStmt.setString(5, email)
preStmt.setInt(6, classid)
val i: Int = preStmt.executeUpdate()
i
}
//删除数据
def deleteStudent(id: Int): Int = {
val deleteSql = "delete from student where id= ?"
val preStmt: PreparedStatement = conn().prepareStatement(deleteSql)
preStmt.setInt(1, id)
val i: Int = preStmt.executeUpdate()
i
}
//修改数据
def updateStudent(id: Int, name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = {
val updateSql = "update student set name=?," + "age=?, " + "gender=?," +
"telephone=?," + "email=?, " + "classid=? where id=?"
val preStmt: PreparedStatement = conn().prepareStatement(updateSql)
preStmt.setString(1, name)
preStmt.setInt(2, age)
preStmt.setString(3, gender)
preStmt.setString(4, telephone)
preStmt.setString(5, email)
preStmt.setInt(6, classid)
preStmt.setInt(7, id)
val i: Int = preStmt.executeUpdate()
i
}
//查询数据
def selectStudent: Unit = {
val selectSql = "select id,name, age, gender, telephone, email, classid from student"
val rs: ResultSet = conn().createStatement().executeQuery(selectSql)
println("学号\t姓名\t年龄\t性别\t手机号\t邮箱\t班级编号")
while (rs.next()) {
val id: Int = rs.getInt("id")
val name: String = rs.getString("name")
val age: Int = rs.getInt("age")
val gender: String = rs.getString("gender")
val telephone: String = rs.getString("telephone")
val email: String = rs.getString("email")
val classid: String = rs.getString("classid")
println(id + "\t" + name + "\t" + age + "\t" + gender + "\t" + telephone + "\t" + email + "\t" + classid)
}
}
}
}
MysqlDemo代码
import java.sql.Connection
class MysqlDemo {
// 连接数据库 底层原理还是jdbc
//驱动名称
var driver = "com.mysql.cj.jdbc.Driver"
// 访问MySQL服务器,通过3306端口访问mysql数据库
var url = "jdbc:mysql://192.168.152.184:3306/exam"
//用户名
var user = "root"
//密码
var password = "123456"
//辅助构造器
def this(driver: String, url: String, user: String, pwd: String) {
this()
this.driver = driver
this.url = url
this.user = user
this.password = pwd
}
}
object MysqlDemo {
// 实现apply方法
def apply(): MysqlDemo = new MysqlDemo()
def apply(driver: String, url: String, user: String, pwd: String): MysqlDemo = new MysqlDemo(driver, url, user, pwd)
def main(args: Array[String]): Unit = {
//创建对象,调用apply方法
val demo = MysqlDemo()
//导入MySQLUtil包
import MysqlUtil._
//调用创建连接的方法
val connection: Connection = demo.conn()
// 调用释放资源方法
demo.close(connection)
//添加数据方法一
val i: Int = demo.insertStudent
if (i == 1) {
println("添加成功")
} else if (i == 0) {
println("添加失败")
}
//添加数据方法二
val i: Int = demo.insertStudent("aaa", 18, "男", "12345678910", "34649756@qq.com", 1)
if (i == 1) {
println("添加成功")
} else if (i == 0) {
println("添加失败")
}
//查询数据
demo.selectStudent
// 修改数据
val i: Int = demo.updateStudent(22, "test", 25, "女", "123456789", "369852@qq.com", 2)
if (i == 1) {
println("修改成功")
} else if (i == 0) {
println("修改失败")
}
//删除数据
val i: Int = demo.deleteStudent(21)
if (i == 1) {
println("删除成功")
} else if (i == 0) {
println("删除失败")
}
}
}
来源:https://blog.csdn.net/qq_57151931/article/details/129802346


猜你喜欢
- 我们知道,(1)如果是整百的年份,能被400整除的,是闰年;(2)如果不是整百的年份,能被4整除的,也是闰年。每400年,有97个闰年。鉴于
- 面试题一:判断下列程序运行结果package String_test;public class test_1 { public static
- 这是一个高级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。接下来
- java 值Document解析xml详细介绍使用jar包:jdom.jar配置文件格式 global.xml一、获取输入的值组成的结点我们
- 一、前言 接触面向对象的思想已经有一段时光了,为什么要学习面向对象呢
- 这篇文章主要介绍了简单了解Spring中BeanFactory与FactoryBean的区别,文中通过示例代码介绍的非常详细,对大家的学习或
- 写在前面Linux:CentOS7.5Spark: spark-3.0.0-bin-hadoop3.2IDE:IntelliJ IDEA20
- 概述:利用AccessibilityService机制实现了一个比较好玩儿的功能,微信朋友圈自动遍历点赞。即通过不断的滚动+点赞实现把每一条
- 本文实例讲述了Java实现的最大匹配分词算法。分享给大家供大家参考,具体如下:全文检索有两个重要的过程:1分词2倒排索引我们先看分词算法目前
- Android本地存储SharedPreferences详解存储位置SharedPreferences数据保存在: /data /data/
- 基类:using System;using System.Collections.Generic;using System.Linq;usi
- ProgressDialog(精度条对话框):1.直接调用ProgressDialog提供的静态方法show()显示2.创建Progress
- 三种定义数组的格式如下:int[] arr1=new int[10];int[] arr2={1,2,3,6};int[] arr3=new
- String类基本概念String类属于引用数据类型,不属于基本数据类型。在Java中只要是" "(双引号)中的,都是S
- 先上图下拉刷新跟原生开发一样,下拉刷新在flutter里提供的有组件实现 RefreshIndicator一直不明白为啥组件中都提供下拉刷新
- 软件生存周期中,涉及代码运行的环节有编码、测试和维护阶段,而一套成熟的代码,在此三个阶段,数据库、日志路径、日志级别、线程池大小等配置一般会
- 程序员讨厌写文档, 讨厌写注释, 而我还讨厌写日志, 输出一个 "Id=5, 姓名=王大锤
- spring的自动装配功能的定义:无须在Spring配置文件中描述javaBean之间的依赖关系(如配置<property>、&
- 最近项目在做新闻爬虫,想实现这个功能:爬虫某个页面失败后,把这个页面的 url 发到邮箱。最终实现的效果图如下,后期可以加上过滤标签、失败状
- 需要读取excel数据转换成json数据,写了个测试功能,转换正常:JSON转换:org.json.jar 测试类: