scala 连接 MySQL 数据库案例
1 依赖准备
mysql 8添加:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency>
mysql 5 添加:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.36</version></dependency>
当然为了避免下载,可以直接去你的本地仓库查看你以前下过什么版本的依赖
2 连接 mysql 数据库并进行数据操作
这里的driver 换成对应自己版本的驱动
mysql 8 就是 com.mysql.cj.jdbc.Driver
mysql 5 就是 com.mysql.jdbc.Driver
这里的 url 一样换成自己的,若是在服务器上就换成服务器 ip,若在本地就用 localhost 就可以
这里只要能打印出连接,能添加进数据就算成功,其余的无非是 Java 连接数据库的操作了,大差不差了 ,有兴趣的可以自己往下加需求
这里的的数据库结构是
建表语句:
show databases ;create database kb23test;
use kb23test;
create table student(id int,name varchar(32),age int
);select * from student;
package mysqlstuimport java.sql.{Connection, DriverManager, PreparedStatement, ResultSet}class MysqlDemo {
// var driver : String = "com.mysql.jdbc.Driver"var driver : String = "com.mysql.cj.jdbc.Driver"
// var url = "jdbc:mysql://127.0.0.1:3306"var url = "jdbc:mysql://39.107.230.113:3306"var user = "root"var pwd = "100860"var connection : Connection = nulldef this(driver : String,url : String,user : String,pwd : String){this()this.driver = driverthis.url = urlthis.user = userthis.pwd = pwd}def conn : Connection={Class.forName(driver)connection = DriverManager.getConnection(url,user,pwd)connection}def insert():Int = {val insertSql = "insert into kb23test.student(id,name,age) values(1,'jojo',12)"if (connection == null) connval i : Int = connection.createStatement().executeUpdate(insertSql)i}def insert(id:Int,name:String,age:Int):Int = {val insertSql = "insert into kb23test.student(id,name,age) values(?,?,?)"if (connection == null) connval pstm : PreparedStatement = connection.prepareStatement(insertSql)pstm.setInt(1,id)pstm.setString(2,name)pstm.setInt(3,age)val i : Int = pstm.executeUpdate()i}def update(id:Int,name:String,age:Int):Int = {val insertSql = "update kb23test.student set name = ?,age = ? where id = ?"if (connection == null) connval pstm : PreparedStatement = connection.prepareStatement(insertSql)pstm.setInt(3,id)pstm.setString(1,name)pstm.setInt(2,age)val i : Int = pstm.executeUpdate()i}def select():Unit={val selectSql = "select id,name,age from kb23test.student"if (connection == null)connval rs : ResultSet = connection.createStatement().executeQuery(selectSql)while(rs.next()){val id : Int = rs.getInt("id")val name : String = rs.getString("name")val age : Int = rs.getInt("age")println("学号:%d 姓名:%s 年龄:%d".format(id,name,age))}}def select(name:String):Unit={val selectSql = "select id,name,age from kb23test.student where name like concat('%',?,'%')"if (connection == null)connval pstm = connection.prepareStatement(selectSql)pstm.setString(1,name)val rs : ResultSet = pstm.executeQuery()while(rs.next()){val id : Int = rs.getInt("id")val name : String = rs.getString("name")val age : Int = rs.getInt("age")println("学号:%d 姓名:%s 年龄:%d".format(id,name,age))}}
}object MysqlDemo{def main(args: Array[String]): Unit = {val mysqlDemo = new MysqlDemoprintln(mysqlDemo.conn)// println(mysqlDemo.insert())
// println(mysqlDemo.insert(2,"dio",142))
// println(mysqlDemo.update(2,"dio",112))
// mysqlDemo.select("d")mysqlDemo.select()}
}
3 隐式类形式去实现连接 mysql
package mysqlstuimport java.sql.Connectionclass MysqlDemo2 {// var driver : String = "com.mysql.jdbc.Driver"var driver: String = "com.mysql.cj.jdbc.Driver"// var url = "jdbc:mysql://127.0.0.1:3306"var url = "jdbc:mysql://39.107.230.113:3306"var user = "root"var pwd = "100860"def this(driver: String, url: String, user: String, pwd: String) {this()this.driver = driverthis.url = urlthis.user = userthis.pwd = pwd}}object MysqlDemo2 {def main(args: Array[String]): Unit = {val demo = new MysqlDemo2()import mysqlstu.MysqlUtils._demo.insert(3,"kk",11)}
}
package mysqlstuimport java.sql.{Connection, DriverManager, PreparedStatement}object MysqlUtils {implicit class Mysqlop(mysqlDemo2: MysqlDemo2){private var connection:Connection = _private def conn():Unit={Class.forName(mysqlDemo2.driver)connection = DriverManager.getConnection(mysqlDemo2.url,mysqlDemo2.user,mysqlDemo2.pwd)}def insert(id:Int,name:String,age:Int):Int = {val insertSql = "insert into kb23test.student(id,name,age) values(?,?,?)"if (connection == null) connval pstm : PreparedStatement = connection.prepareStatement(insertSql)pstm.setInt(1,id)pstm.setString(2,name)pstm.setInt(3,age)val i : Int = pstm.executeUpdate()i}}
}
相关文章:
scala 连接 MySQL 数据库案例
1 依赖准备 mysql 8添加: <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency> mysql 5 添加: <dependency><grou…...
guava工具类常用方法
Guava是Google开发的一个Java开源工具类库,它提供了许多实用的工具类和功能,可以简化Java编程中的常见任务。 引入依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>2…...
CSShas伪类选择器案例附注释
<!DOCTYPE html> <html lang="en"> <head><meta charset...
nodejs+vue中医体质的社区居民健康管理系统elementui
可以实现首页、中医体质量表、健康文章、健康视频、我的等,在我的页面可以对医生、小区单元、医疗药品等功能进行操作。目前主要的健康管理系统是以西医为主,而为了传扬中医文化,提高全民健康意识,解决人民日益增长的美好生活需要…...
Kotlin中reified 关键字
前言 在开始之前,让我们先讨论一下泛型。泛型用于为类、函数或接口提供通用的实现。下面是一个示例泛型方法: fun <T> displayValue(value: T) {println(value) }fun main() {displayValue<String>("Generics")displayValue<…...
Linux命令(95)之alias
linux命令之alias 1.alias介绍 linux命令alias是用来将/bin目录下的命令进行别名设置,将一些较长的命令进行简化。 alias命令的作用只局限于该次登入的操作,相当于临时变量。 如果对当前用户永久生效,需修改~/.bashrc文件,使用…...
DHCPsnooping 配置实验(2)
DHCP报文泛洪攻击 限制接收到报文的速率 vlan 视图或者接口视图 dhcp request/ dhcp-rate dhcp snooping check dhcp-request enable dhcp snooping alarm dhcp-request enable dhcp snooping alarm dhcp-request threshold 1 超过则丢弃报文 查看[Huawei]dis dhcp statistic…...
Qt 综合练习小项目--反金币(2/2)
目录 4 选择关卡场景 4.2 背景设置 4.3 创建返回按钮 4.3 返回按钮 4.4 创建选择关卡按钮 4.5 创建翻金币场景 5 翻金币场景 5.1 场景基本设置 5.2 背景设置 5.3 返回按钮 5.4 显示当前关卡 5.5 创建金币背景图片 5.6 创建金币类 5.6.1 创建金币类 MyCoin 5.6.…...
安装matplotlib__pygame,以pycharm调入模块
安装pip 安装matplotlib 安装完毕,终端输入pip list检查 导入模块出现bug,发现不是matplotlib包的问题,pycharm版本貌似不兼容,用python编辑器可正常绘图,pygame也可正常导入。 pycharm版本问题解决 终…...
编写可扩展的软件:架构和设计原则
在今天的软件开发领域,可扩展性是一个至关重要的概念。无论您是开发一个小型应用程序还是一个大规模的软件系统,都需要考虑如何使您的软件能够在不断变化的需求下进行扩展和演进。本文将探讨编写可扩展软件的关键架构和设计原则,以帮助开发人…...
算法-排序算法
0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间…...
Android_Monkey_测试执行策略及标准
一、Monkey命令概述 NO命令说明用法解释1 -p ALLOWED_PACKAGE用于指定某个apk,可以使用多个-p选项,但是每个-p命令选项只能用于一个apk 如果不指定-p,Monkey就会默认进行全系统测试。 -p com.android.contacts可以进行特定apk的Monkey测试2 …...
windows安装nginx
官网提供的下载地址:nginx: download nginx1.25.2下载地址:http://nginx.org/download/nginx-1.25.2.zip 直接运行nginx.exe会闪退,我们还得使用cmd/git bash/power shell 命令进行启动; 个人更喜欢git bash; 运行命…...
Java日期的学习篇
关于日期的学习 目录 关于日期的学习JDK8以前的APIDate Date常用APIDate的API应用 SimpleDateFormatSimpleDateFormat常用API测试 反向格式化(逆操作)测试 训练案例需求(秒杀活动)实现 Calendar需求痛点常见API应用测试 JDK8及以后的API(修改与新增)为啥学习(推荐使用)新增的AP…...
spark on hive
需要提前搭建好hive,并对hive进行配置。 1、将hive的配置文件添加到spark的目录下 cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf2、开启hive的hivemetastore服务 提前创建好启动日志存放路径 mkdir $HIVE_HOME/logStart nohup /usr/local/lib/apache-hi…...
Linux Vi编辑器基础操作指南
Linux Vi编辑器基础操作指南 Linux中的Vi是一个强大的文本编辑器,虽然它有一些陡峭的学习曲线,但一旦掌握了基本操作,它就变得非常高效。以下是Vi编辑器的一些基本用法: 打开Vi编辑器: vi 文件名退出Vi编辑器ÿ…...
WEB3 创建React前端Dapp环境并整合solidity项目,融合项目结构便捷前端拿取合约 Abi
好 各位 经过我们上文 WEB3 solidity 带着大家编写测试代码 操作订单 创建/取消/填充操作 我们自己写了一个测试订单业务的脚本 没想到运行的还挺好的 那么 今天开始 我们就可以开始操作我们前端 Dapp 的一个操作了 在整个过程中 确实是没有我们后端的操作 或者说 我们自己就…...
rust运算
不同类型不能放在一起运算。如果非要计算,必须先强转成一个类型再运算。 一 、数字运算 (一)算术运算 a 10且b 5 名称运算符范例加ab的结果为15减-a-b的结果为5乘*a*b的结果为50除/a / b的结果为2求余%a % b的结果为0 Rust语言不支持自增…...
游戏引擎,脚本管理模块
编辑器中删除脚本,然后立即恢复删除的脚本关系正常编辑器中删除脚本,关掉编辑器,然后只恢复脚本,不恢复meta,然后再打开编辑器关系丢失编辑器中删除脚本,关掉编辑器,然后恢复脚本且恢复meta,然后再打开编辑…...
2023年7月工作经历三
年龄危机 传言:程序员干不过37岁,架构师干不过45岁,总监干不过55岁。我已经43岁了。当总监需要机遇;首下犯错,会扣领导工资;有的公司总监还需要出资。为了方便以后当总监,我还在超音速带过小团…...
1801_codesys产品主样本了解
全部学习汇总: GreyZhang/g_codesys: some codesys learning notes (github.com) 有些技术、学术的成长,氛围也是很重要的。我觉得工业控制,德国做得算是世界上很突出的。而这个巴伐利亚,更是突出中的佼佼者了。从这里的介绍看&am…...
flink的计时器
背景 在flink中,我们经常使用ontimer计时器实现很多逻辑的功能,常见的比如某个传感器温度增加连续超过1分钟的告警输出等,本文就来简单记录下计时器的作用 计时器 ontimer的定义 public void onTimer(long timestamp, OnTimerContext ctx…...
@SpringBootApplication剖析
一、前言 在SpringBoot项目中启动类必须加一个注解SpringBootApplication,今天我们来剖析SpringBootApplication这个注解到底做了些什么。 二、SpringBootApplication简单分析 进入SpringBootApplication源代码如下: 可以看出SpringBootApplication是…...
浅谈wor2vec,RNN,LSTM,Transfermer之间的关系
浅谈wor2vec,RNN,LSTM,Transfermer之间的关系 今天博主谈一谈wor2vec,RNN,LSTM,Transfermer这些方法之间的关系。 首先,我先做一个定位,其实Transfermer是RNN,LSTM&…...
【11】c++设计模式——>单例模式
单例模式是什么 在一个项目中,全局范围内,某个类的实例有且仅有一个(只能new一次),通过这个唯一的实例向其他模块提供数据的全局访问,这种模式就叫单例模式。单例模式的典型应用就是任务队列。 为什么要使…...
深度学习-卷积神经网络-AlexNET
文章目录 前言1.不同卷积神经网络模型的精度2.不同神经网络概述3.卷积神经网络-单通道4.卷积神经网络-多通道5.池化层6.全连接层7.网络架构8.Relu激活函数9.双GPU10.单GPU模型 1.LeNet-52.AlexNet1.架构2.局部响应归一化(VGG中取消了)3.重叠/不重叠池化4…...
人机关系不是物理关系也不是数理关系
人机关系是一种复杂的社会技术系统,涉及到人类和机器、环境之间的相互作用和影响。它不仅限于物理接触和数理规律,同时还包括了思维、情感、意愿等方面的交流和互动。在人机关系中,人类作为使用者和机器作为工具(将来可能会上升到…...
<html dir=ltr>是什么意思?
<html dirltr>的意思是: 文字默认从左到右排列 说明: HTML--超级文本标记语言 dir 属性 -- (文字的)排列方式属性 取值: ltr -- 代表左到右的排列方式 rtl -- 代表右到左的排列方式 默认值:ltr 示例: ltr左到右的对…...
工厂模式:简化对象创建的设计思想 (设计模式 四)
引言 在软件开发中,我们经常需要创建各种对象实例来满足不同的需求。通常情况下,我们会使用new关键字直接实例化对象,但这种方法存在一些问题,比如对象的创建逻辑分散在代码中,难以维护和扩展,同时也违反了…...
【2023最新】微信小程序中微信授权登录功能和退出登录功能实现讲解
文章目录 一、讲解视频二、小程序前端代码三、后端Java代码四、备注 一、讲解视频 教学视频地址: 视频地址 二、小程序前端代码 // pages/profile/profile.js import api from "../../utils/api"; import { myRequest } from "../../utils/reques…...
python库之web网站开发PPT/百度广告屏蔽
http://www.cnblogs.com/woyaowenzi/archive/2008/09/11/1289344.html转载于:https://www.cnblogs.com/xyyshishuaige/p/9148998.html...
wordpress用oss还是七牛/做百度网站一年多少钱
随着移动互联网时代的到来,企业能够在市场上稳住根基的办法就是打赢移动互联网之战。但不可否认,移动互联网的竞争比PC时代更为激烈,淘汰速度会大大加速也会会大大加速。对比近几年手机软件500强的数据会发现,每年都会有数十家曾经…...
如何做外文网站/seo优化排名服务
文|智能相对论作者|沈浪回顾过去的2022年,人工智能产业继续在巨变中迎来突破性成长。一方面,人工智能产业相关的应用越来越丰富、创新,比如元宇宙的出现和走红,为市场创造的一个全新的业态,也为用户带来了诸多新奇的体…...
香港服务器免实名/神马搜索seo优化排名
上个星期,Hamilton向微软MVC团队通报了Castle团队从现实应用中获得的所有复杂和不直观的需求,并告知他们如何处理这些事情。另外他还开发了一些集成案例,作为对MS MVC可扩展性和插拔性的概念验证。我现在可以做到: 创建对IParamet…...
网站如何做邮箱订阅号/营销推广方法有哪些
开篇前端开发是一个非常特殊的行业,它的历史实际上不是很长,但是知识之繁杂,技术迭代速度之快是其他技术所不能比拟的。winter在他的《重学前端》课程中提到:到现在为止,前端工程师已经成为研发体系中的重要岗位之一。…...
建设部网站上怎样查询企业业绩/百度seo新站优化
参考文档https://github.com/liuzhengyang/hsdis一:下载配置 HsdisLinux的前提条件要在linux上构建hsdis,您需要确保拥有标准构建工具apt-get install build-essential执行apt -get命令 提示找不到命令yum -y install firefox1. 下载配置 Hsdis之前是在网…...