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}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/100214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬取微博热榜并将其存储为csv文件

&#x1f64c;秋名山码民的主页 &#x1f602;oi退役选手&#xff0c;Java、大数据、单片机、IoT均有所涉猎&#xff0c;热爱技术&#xff0c;技术无罪 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 获取源码&#xff0c;添加WX 目录 前言1.…

防止SQL注入攻击的综合解决方案

文章目录 摘要背景和危害性防御措施示例代码&#xff08;Java&#xff09;示例代码&#xff08;PHP&#xff09;示例MySQL命令示例代码&#xff08;Python&#xff09;示例代码&#xff08;C#&#xff0c;使用Entity Framework&#xff09; 进一步防御SQL注入攻击的措施使用ORM…

【Linux】Git使用

一、Git简介 Git 是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理很小或非常大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同&#xff0c;它采用了分布…

Kafka 简介之(学习之路)

正文 一、简介 1.1 概述 Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、分区的、多副本的、多订阅者&#xff0c;基于zookeeper协调的分布式日志系统&#xff08;也可以当做MQ系统&#xff09;&#xff0c;常见可以用于web/nginx日志、访问日志&#xff0c;消息服务…

原生JS-鼠标拖动

原生JS-鼠标拖动 通过鼠标的点击事件通过h5的属性 通过鼠标的点击事件 步骤&#xff1a; 1. 鼠标按下div。 2. 鼠标移动&#xff0c;div跟着移动 原生js&#xff0c;实现拖拽效果。1. 给被拖拽的div加上 onmousedown 鼠标【按下事件】。鼠标按下的时候&#xff0c;开始监听鼠标…

【Spring框架学习3】Spring Bean的作用域 及 生命周期

一、Spring Bean的作用域有哪些&#xff1f; Spring框架支持以下五种Bean的作用域&#xff1a; Singleton&#xff1a;这是默认的作用域&#xff0c;在每个Spring IoC容器中只有一个Bean的实例(IoC初始化后)。Spring 中的 bean 默认都是单例的&#xff0c;是对单例设计模式的…

JackJson和FastJson

前言&#xff1a; fastjson是一款强大的json格式转换工具&#xff0c;我个人在开发中就非常喜欢用fastjson&#xff1b;但是由于某些原因&#xff0c;导致fastjson会有一些漏洞&#xff0c;因此在漏洞扫描后需要修复都是要求我们升级版本&#xff0c;或者替换为jackjson&#…

使用uwsgi部署Flask

安装 这里直接使用包管理器提供的版本&#xff0c;不过建议大家使用pip来安装&#xff0c;会少一些坑&#xff1a; (Debian/Ubuntu) apt-get install uwsgi uwsgi-plugin-python3 或使用pip安装&#xff1a; pip3 install uwsgi 试试看 [demo.py] from flask import Flas…

cesium图标漂移分析与解决

漂移现象如下 什么是图标漂移&#xff1f; 随着视野改变&#xff0c;图标相对于地面发生了相对位置的变化 让人感觉到图标有飘忽不定的感觉 原因分析 图标是静止的&#xff0c;它的位置在世界坐标系中是绝对的、静止的。 漂移大部分的原因是&#xff1a; 透视关系发生了错…

新华三辅导笔记 2023/10/9-2023/10/13

新华三辅导笔记 一、需要用到的软件二、计算机网络概述1、计算机网络的定义和基本功能&#xff08;1&#xff09;什么是计算机网络&#xff08;2&#xff09;计算机网络的基本功能 2、&#xff08;1&#xff09;局域网、城域网和广域网&#xff08;范围划分&#xff09;&#x…

OpenCV防抖实践及代码解析笔记

视频防抖是指用于减少摄像机运动对最终视频的影响的一系列方法。摄像机的运动可以是平移&#xff08;比如沿着x、y、z方向上的运动&#xff09;或旋转&#xff08;偏航、俯仰、翻滚&#xff09;。 正如你在上面的图片中看到的&#xff0c;在欧几里得运动模型中&#xff0c;图像…

leetcode:190. 颠倒二进制位

一、题目&#xff1a; 函数原型&#xff1a; uint32_t reverseBits(uint32_t n) 解释&#xff1a;uint32是无符号int或short的别称&#xff0c;传入的参数是一个32位二进制串&#xff0c;返回值是该32位二进制串逆序后的十进制值 二、思路&#xff1a; 实际上并不需要真的去逆…

移动应用-Android-开发指南

Android-UI开发指南 Android Studio调试UI设计UI框架布局Layout文本框 android的活动Activity基本概念Activity的生命周期Activity栈创建Activity管理ActivityActivity间传递数据 FragmentAdapterRecyclerViewRecyclerView Adapter&#xff08;适配器&#xff09;事件setOnItem…

Can 通信-协议

概述 CAN 是 Controller Area Network 的缩写&#xff08;以下称为 CAN&#xff09;&#xff0c;是 ISO国际标准化的串行通信协议。 在当前的汽车产业中&#xff0c;出于对安全性、舒适性、方便性、低公害、低成本的要求&#xff0c;各种各样的电子控制系统 被开发了出来。由于…

uniapp快速入门系列(3)- CSS技巧与布局

章节三&#xff1a;CSS技巧与布局 1. uniapp中的样式编写2. 常见布局技巧与实例解析2.1 水平居中布局2.2 垂直居中布局2.3 等高布局2.4 响应式布局 3. CSS动画与过渡效果 在uniapp中&#xff0c;我们使用CSS来设置页面的样式和布局。本章将介绍一些在uniapp中常用的CSS技巧和布…

IDEA的使用(一)代码模块的导入、快捷使用、自定义 (IntelliJ IDEA 2022.1.3版本)

目录 1. IDEA项目结构 2. 模块的导入操作 2.1 正规操作 2.2 取巧操作 2.3 出现乱码 2.4 模块改名 3. 代码模板的使用 后缀补全&#xff08;Postfix Completion&#xff09;、实时模板&#xff08;Live Templates&#xff09;菜单里面什么介绍都有&#xff0c;可以自学&a…

4.02 用户中心-上传头像功能开发

详细内容请看下面地址&#xff1a; 地址&#xff1a;http://www.gxcode.top/code

使用idea创建的springboot项目报错:“java: 错误: 无效的源发行版:17”

原因&#xff1a; 您的Idea版本不支持Java 17。 解决办法&#xff1a; 方法一&#xff1a;升级idea&#xff08;pass&#xff09; 方法二&#xff1a;更改项目的源和目标发行版本&#xff08;推荐&#xff09; 打开项目&#xff0c;找到项目的根目录。打开根目录中的.idea文件…

林沛满-TCP 是如何避免被发送方分片的?

TCP 可以避免被发送方分片&#xff0c;是因为它主动把数据分成小段再交给网络层。最大的分段大小称为 MSS&#xff08;Maximum Segment Size&#xff09;&#xff0c;它相当于把 MTU 刨去 IP头和 TCP 头之后的大小&#xff0c;所以一个 MSS 恰好能装进一个 MTU 中。 图4 图 4 …

pagehelper分页查询

pagehelper分页查询 PageHelper是MyBatis框架中提供的分页插件&#xff0c;它支持Oracle、Mysql、MariaDB、SQLite、Hsqldb、PostgreSQL六种数据库。使用PageHelper可以方便地进行分页查询&#xff0c;只需在SQL查询前调用PageHelper.startPage方法并传入两个参数&#xff1a;…