Scala笔记(五):MySQL数据库配置与Scala编程

MySQL数据库安装配置

为了方便直观的看到/操作数据库,一般需要安装Navicat Premium软件,支持多种数据库。
安装过程就不多废话了,主要参考以下连接,亲测没坑,主要也就是那几个文件:
Navicat Premium 12.0.18 / 12.0.24安装与激活
https://www.jianshu.com/p/42a33b0dda9c
Navicat Premium 12.0.29 / 12.1.5.0安装与激活
https://www.jianshu.com/p/5f693b4c9468


Scala通过JDBC方式操作mysql ,非JDBC的暂时还不会。

Scala通过JDBC方式操作mysql基础

以下先贴别人试过简单可行的,没有问题。增删查改的量都是常量,在输入以前都已知且不会变化,由于是程序中,增删查改的内容难免包含变量,后面将给出一种简单的方法来实现。

package ScalaSQL
import java.sql.{Connection, DriverManager}

object ScalaJDBC {
def main(args: Array[String]) {
 val url = "jdbc:mysql://101.18.4.14:2267/aitc_report"
 //如果是本地测试则为val url = "jdbc:mysql://localhost/scala_test"
 //主要格式为jdbc:mysql://IP地址/数据库名"
    val driver = "com.mysql.jdbc.Driver"//驱动名称
    val user = "aitc_report"//用户名
    val password = "sdkfnhi"//密码
    //初始化数据连接
    var connection: Connection = null
    try {
      Class.forName(driver)
      connection = DriverManager.getConnection(url,user,password)
      val statement = connection.createStatement
    //---------------------------------------------------------
    val rs = statement.executeQuery("SELECT name, num FROM persons")//要指出数据库中表的名字(此处为persons,num和name分别为scheme信息)
    while (rs.next) {
      val name = rs.getString("name")
      val num = rs.getString("num")
      println("name = %s, num = %s".format(name, num))
    }//执行查询语句,并返回结果
    //-------------------------------------------------------
      val rs2 = statement.executeUpdate("INSERT INTO `report` (`name`,`num`) VALUES ('zhangsan', '88')")//插入新数据
    //-------------------------------------------------------
     val rs3 = statement.executeUpdate("UPDATE persons set num=11 WHERE `name`=\"zhangsan\"")//已有数据更新修改
    //-------------------------------------------------------
    val rs4 = statement.executeUpdate("delete from persons WHERE `name`=\"zhangsan\"")//已有数据删除
    //-------------------------------------------------------
    val rs5 = statement.executeUpdate("call add_student(3)")//执行调用存储过程操作
    } catch {
      case e: Exception => e.printStackTrace
    }
    connection.close//关闭连接,释放资源

Scala通过JDBC方式操作mysql进阶

Scala程序运行的结果中,可能包含一些变量,这时候增删查改的内容也难免包含变量。操作的方法除了网上所述的将结果变化为DataFrame的形式之外,另外一种简单的方式如下示例:

    val datalist=List(XXXXX)//由于公司原因这一部分省略了
    val url="jdbc:mysql://101.18.4.14:2267/aitc_report"
    val data = sc.parallelize(datalist)
    data.foreachPartition(myFun)

    def myFun(iterator: Iterator[(String, Int,Int,Int,Int,Int,Int,Double)]): Unit = { //函数的参数类型严格对应上,后续还会有Set
      var conn: Connection= null
      var ps:java.sql.PreparedStatement=null
      val sql="insert into `report_youxi`(`date`,`aitcsender_num`,`sjzssender_num`,`arrive`,`close`,`pop`,`click`,`CTR`)"+"values (?,?,?,?,?,?,?,?)"      conn=DriverManager.getConnection(url,"aitc_report","sdkfnhi")
      ps = conn.prepareStatement(sql)
      iterator.foreach(data => {
        ps.setString(1, data._1)
        ps.setInt(2, data._2)
        ps.setInt(3, data._3)
        ps.setInt(4, data._4)
        ps.setInt(5, data._5)
        ps.setInt(6, data._6)
        ps.setInt(7, data._7)
        ps.setDouble(8, data._8)
        ps.executeUpdate() //执行Sql语句
      })}

参考:

https://blog.csdn.net/rainy_lee/article/details/44562531
第二个参考的暂时没找到原链接,找到了补上。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值