• 【Scala】Scala使用JDBC连接Mysql/权限问题


    步骤:
    1)MySQL的驱动
    2)Connection 重量级的获取过程。可以使用POOL优化
    3)Statement 执行的类
    4)ResultSet 结果的封装
    5)Close

    在pom中添加scala、hadoop、Mysql驱动依赖包:

    <properties>
        <scala.version>2.11.8</scala.version>
        <hadoop.version>2.6.5</hadoop.version>
    </properties>
     <dependency>
          <groupId>org.scala-lang</groupId>
          <artifactId>scala-library</artifactId>
          <version>${scala.version}</version>
        </dependency>
    <dependency>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-client</artifactId>
          <version>${hadoop.version}</version>
    </dependency>
    <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.28</version>
    </dependency>

    编写代码:

    import java.sql.DriverManager
    object ScalaJDBCApp {
              def main(args:Array[String]):Unit = {
                        val url = "jdbc:mysql://hadoop001:3306/ruoze_g6"
                        val user =  "root"
                        val password = "123456"
                     
                        //classOf[com.mysql.jdbc.Driver]//或者使用 Class.forName("com.mysql.jdbc.Driver")
                        Class.forName("com.mysql.jdbc.Driver")

                        val sql = "select city_id,city_name from city_info"
                        val connection = DriverManager.getConnection(url,user,password)
                        val stmt = connection.createStatement()
                        val rs = stmt.executeQuery(sql)
                        while(rs.next()){
                                  val cityid = rs.getInt(1)
                                  val    cityname = rs.getString(2)
                                  println(cityid+"....."+cityname)
                        }
                        rs.close()
                        stmt.close()
                        connection.close()
              }
    }

    可能出现的异常:
    1)java.sql.SQLException: No suitable driver found for jdbc://mysql://hadoop001:3306/ruoze_g6有可能是驱动没加进来,有可能是连接地址url写错了
    2)SQLException: Access denied for user 'root'@'192.168.119.1' (using password: YES)数据库、表访问权限的异常。可能是用户权限不够,也可能是ip的权限不够。所以在mysql中修改访问权限
    grant all privileges on *.* to root@'%' identified by '123456';
    表示root用户可以在任何ip都可以访问任何库,密码是123456

    但是一般都不会用原生的,都是使用框架。

  • 相关阅读:
    最佳实践:腾讯HTAP数据库TBase助力某省核心IT架构升级
    数据库中间件
    深入理解JVM—JVM内存模型
    【实战解析】基于HBase的大数据存储在京东的应用场景
    Only the storage referenced by ptr is modified. No other storage locations are accessed by the call.
    京东11.11:京麦服务市场交易平台备战实践
    gitignore 不起作用的解决办法 不再跟踪 让.gitignore生效,跟踪希望被跟踪的文件
    JAVA中的array是通过线性表还是链表实现的呢?
    在链表中,元素的"位序"概念淡化,结点的"位置"概念淡化
    微软开源项目提供企业级可扩展推荐系统最新实践指南
  • 原文地址:https://www.cnblogs.com/huomei/p/12103714.html
Copyright © 2020-2023  润新知