用Scala去操作MySQL数据库

前言

本文用Scala去操作JDBC。
本文用原生态的scala语言来写,工作中不建议这样写,工作中都是用框架来写的。

要操作MySQL需要:
MySQL JDBC编程 的套路:
1)MySQL的驱动(需要这个驱动来去操作MySQL)
2)需要获取connection信息,这是一个重量级的过程,要经过磁盘IO、网络IO,这个一般要借助一个连接池,用到从里面拿,用完还回去。用pool比直接获取connection性能要高一些
3)SQL Statement 把SQL语句传进去
4)ResultSet 拿到SQL执行的结果集
5)close 释放资源

IO编程套路:
1)打开资源
2)业务处理
3)释放资源

代码开发

首先在pom,xml文件中添加相关依赖什么的

  <properties>
     <scala.version>2.11.8</scala.version>
    <mysql.version>5.1.28</mysql.version>
  </properties>
  
  <dependencies>
    <!--Scala的依赖-->
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>${scala.version}</version>
    </dependency>
 <!--添加MySQL驱动-->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.28</version>
      </dependency>
  </dependencies>

代码如下:

package com.ruozedata.bigdata.scala03

import java.sql.DriverManager

object ScalaJDBCApp {
  def main(args: Array[String]): Unit = {

    val url = "jdbc:mysql://hadoop001:3306/ruoze_d6"
    val user = "root"
    val password = "123456"
    val sql = "select DB_ID,DB_LOCATION_URI,NAME from dbs"

//这个地方在生产上要加上
//这个地方的作用是把Java驱动加进来
//    Class.forName("com.mysql.jdbc.Driver")   //Java中的  scala也可以用
    classOf[com.mysql.jdbc.Driver]             //scala中的

    val connetcion = DriverManager.getConnection(url,user,password)
    val stmt =connetcion.createStatement()   //通过connection创建一个Statement
    val rs = stmt.executeQuery(sql)        //通过Statement,执行SQL语句
    while (rs.next()){
      val dbid = rs.getLong(1)
      val location = rs.getString(2)
      val name = rs.getString(3)

      println(dbid + " " + location + "  " + name)
    }
    rs.close()
    stmt.close()
    connetcion.close()
  }
}

运行结果;

1 hdfs://10-9-140-90:9000/user/hive/warehouse  default
6 hdfs://10-9-140-90:9000/user/hive/warehouse/d6_test.db  d6_test
11 hdfs://10-9-140-90:9000/user/hive/warehouse/test.db  test
16 hdfs://10-9-140-90:9000/d6_hive/directory  test2
21 hdfs://10-9-140-90:9000/user/hive/warehouse/g6_hadoop.db  g6_hadoop
31 hdfs://hadoop001:9000/user/hive/warehouse/g6.db  g6

Process finished with exit code 0

以上代码只是简单写了下过程,实际上异常捕获什么的都没有加进去。

猜你喜欢

转载自blog.csdn.net/liweihope/article/details/89893622