如何在SBT Scala项目中使用MySQL JDBC驱动程序?
当我在SBT会话期间第一次运行我的项目时,在尝试访问MySQL数据库时会抛出以下异常:
当我再次运行它(和之后的任何时间,在同一个SBT会话),它抛出一个不同的:
当我使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |