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 mysqlstu

import 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 = null


  def this(driver : String,url : String,user : String,pwd : String){
    this()
    this.driver = driver
    this.url = url
    this.user = user
    this.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) conn
    val 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) conn
    val 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) conn
    val 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)conn
    val 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)conn
    val 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 MysqlDemo
    println(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 mysqlstu

import java.sql.Connection

class 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 = driver
    this.url = url
    this.user = user
    this.pwd = pwd
  }

}

object MysqlDemo2 {
  def main(args: Array[String]): Unit = {
    val demo = new MysqlDemo2()
    import mysqlstu.MysqlUtils._

    demo.insert(3,"kk",11)
  }
}
package mysqlstu

import 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) conn
      val pstm : PreparedStatement = connection.prepareStatement(insertSql)
      pstm.setInt(1,id)
      pstm.setString(2,name)
      pstm.setInt(3,age)
      val i : Int = pstm.executeUpdate()
      i
    }
  }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设你已经安装好了Spark和Scala,并且已经配置好了数据库连接信息。下面是一个SparkSQL和Scala交互的例子,用于在数据库中查询数据。 首先,我们需要创建一个SparkSession对象: ```scala import org.apache.spark.sql.SparkSession val spark = SparkSession.builder() .appName("SparkSQLExample") .master("local[*]") .getOrCreate() ``` 接下来,我们需要使用SparkSession对象来创建一个DataFrame,然后可以使用DataFrame API或SparkSQL来查询数据。下面是一个使用DataFrame API进行查询的例子: ```scala import org.apache.spark.sql.functions._ val df = spark.read.format("jdbc") .option("url", "jdbc:mysql://localhost:3306/mydatabase") .option("driver", "com.mysql.jdbc.Driver") .option("dbtable", "mytable") .option("user", "myuser") .option("password", "mypassword") .load() df.select("column1", "column2") .filter(col("column3") > 10) .show() ``` 上面的代码会从数据库中读取表格“mytable”,然后选择“column1”和“column2”这两列,并且过滤掉“column3”大于10的行。最后,结果会以表格的形式显示出来。 下面是一个使用SparkSQL进行查询的例子: ```scala df.createOrReplaceTempView("mytable") val result = spark.sql("SELECT column1, column2 FROM mytable WHERE column3 > 10") result.show() ``` 上面的代码会将DataFrame“df”注册为一个临时表格“mytable”,然后使用SparkSQL查询这个表格,并过滤掉“column3”大于10的行。最后,结果会以表格的形式显示出来。 以上就是一个SparkSQL和Scala交互在数据库中查询的例子。你可以根据实际情况进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值