加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在SBT Scala项目中使用MySQL JDBC驱动程序?

发布时间:2020-12-16 09:41:12 所属栏目:安全 来源:网络整理
导读:当我在SBT会话期间第一次运行我的项目时,在尝试访问MySQL数据库时会抛出以下异常: java.lang.NoClassDefFoundError: scala/Ordered 当我再次运行它(和之后的任何时间,在同一个SBT会话),它抛出一个不同的: java.sql.SQLException: No suitable driver fo
当我在SBT会话期间第一次运行我的项目时,在尝试访问MySQL数据库时会抛出以下异常:

java.lang.NoClassDefFoundError: scala/Ordered

当我再次运行它(和之后的任何时间,在同一个SBT会话),它抛出一个不同的:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/…

当我使用NetBeans时,相同的代码正常工作。现在,当我使用SBT进行构建和Kate手动编辑和管理我的项目时,我得到这些运行时错误。

MySQL JDBC驱动程序(从MySQL.com下载)JAR在项目的lib目录中,所有其他已经放在那里的库都可以正常工作。

这是代码:

import java.sql._
...
// read
val dbc : Connection = DriverManager.getConnection("jdbc:mysql://localhost/...")
val st : Statement = dbc.createStatement
val rs : ResultSet = st.executeQuery("SELECT ...")
if(rs.first) result = rs.getDouble("field")
dbc.close
...
// write
val dbc : Connection = DriverManager.getConnection("jdbc:mysql://localhost/...")
val st : Statement = dbc.createStatement
st.execute("UPDATE ...")
dbc.close

我看到一个看起来很相关的question,但仍然没有答案。

解决方法

在SBT项目类中应该有一行:

// Declare MySQL connector Dependency
  val mysql = "mysql" % "mysql-connector-java" % "5.1.12"

这将导入MySQL的JDBC驱动程序JAR文件。

你加载了驱动程序吗?如果您使用这个Util类来获取连接,则驱动程序将被正确加载一次:

// Util Class
object DaoUtil {
  import java.sql.{DriverManager,Connection}

  private var driverLoaded = false

  private def loadDriver()  {
    try{
      Class.forName("com.mysql.jdbc.Driver").newInstance
      driverLoaded = true
    }catch{
      case e: Exception  => {
        println("ERROR: Driver not available: " + e.getMessage)
        throw e
      }
    }
  }

  def getConnection(dbc: DbConnection): Connection =  {
    // Only load driver first time
    this.synchronized {
      if(! driverLoaded) loadDriver()
    }

    // Get the connection
    try{
      DriverManager.getConnection(dbc.getConnectionString)
    }catch{
      case e: Exception  => {
        println("ERROR: No connection: " + e.getMessage)
        throw e
      }
    }
  }
}

代码来自于我之前写过的一个简单的SBT – MySQL教程。如果要下载完整的教程,请参阅http://github.com/ollekullberg/SimpleOrder

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读