前言
本文用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
以上代码只是简单写了下过程,实际上异常捕获什么的都没有加进去。