Scala, Slick connect to MSSQL server(Scala,巧妙连接到MSSQL服务器)
本文介绍了Scala,巧妙连接到MSSQL服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用SLICK框架连接到MSSQL数据库。下面的代码显示了我的第一次尝试,但我找不出哪里出了问题。
离开时出现此错误,如下所示: [1]Value Create不是scala.slick.lifted.DDL的成员
现在我删除该行,因为我不一定需要在Scala代码中创建表。但随后又出现了另一个错误: [2]值映射不是对象asd.asd.App.Coffee的成员package asd.asd
import scala.slick.driver.SQLServerDriver._
import scala.slick.session.Database.threadLocalSession
object App {
object Coffees extends Table[(String, Int, Double)]("COFFEES") {
def name = column[String]("COF_NAME", O.PrimaryKey)
def supID = column[Int]("SUP_ID")
def price = column[Double]("PRICE")
def * = name ~ supID ~ price
}
def main(args : Array[String]) {
println( "Hello World!" )
val db = slick.session.Database.forURL(url = "jdbc:jtds:sqlserver", user = "test", password = "test", driver = "scala.slick.driver.SQLServerDriver")
db withSession {
Coffees.ddl.create [1]
// Coffees.insertAll(
// ("Colombian", 101, 7.99),
// ("Colombian_Decaf", 101, 8.99),
// ("French_Roast_Decaf", 49, 9.99)
// )
val q = for {
c <- Coffees [2]
} yield (c.name, c.price, c.supID)
println(q.selectStatement)
q.foreach { case (n, p, s) => println(n + ": " + p) }
}
}
}
推荐答案
问题已解决。我所做的如下:更新到最新的SLICK版本,然后调整代码,如演示的here。之后您需要调换线路
import scala.slick.driver.H2Driver.simple._
与
import scala.slick.driver.SQLServerDriver.simple._
并将连接字符串修改为
[...]
Database.forURL("jdbc:jtds:sqlserver://localhost:1433/<DB>;instance=<INSTANCE>", driver = "scala.slick.driver.SQLServerDriver") withSession {
[...]
解决了这个问题后,我决定使用C3P0池连接(这使Slick速度非常快,因此是第一个可用的,我强烈建议使用连接池!)。这给我留下了以下数据库对象。
package utils
import scala.slick.driver.SQLServerDriver.simple._
import com.mchange.v2.c3p0.ComboPooledDataSource
object DatabaseUtils {
private val ds = new ComboPooledDataSource
ds.setDriverClass("scala.slick.driver.SQLServerDriver")
ds.setUser("supervisor")
ds.setPassword("password1")
ds.setMaxPoolSize(20)
ds.setMinPoolSize(3)
ds.setTestConnectionOnCheckin(true)
ds.setIdleConnectionTestPeriod(300)
ds.setMaxIdleTimeExcessConnections(240)
ds.setAcquireIncrement(1)
ds.setJdbcUrl("jdbc:jtds:sqlserver://localhost:1433/db_test;instance=SQLEXPRESS")
ds.setPreferredTestQuery("SELECT 1")
private val _database = Database.forDataSource(ds)
def database = _database
}
您可以如下所示使用它。
DatabaseUtils.database withSession {
implicit session =>
[...]
}
上一个C3P0的Maven依赖项和最新的Slick版本。
<dependency>
<groupId>com.typesafe.slick</groupId>
<artifactId>slick_2.10</artifactId>
<version>2.0.0-M3</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.2.1</version>
</dependency>
这篇关于Scala,巧妙连接到MSSQL服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Scala,巧妙连接到MSSQL服务器
基础教程推荐
猜你喜欢
- Sql*plus 总是返回退出代码 0? 2021-01-01
- 与不使用派生表的查询相比,使用派生表的查询 2021-01-01
- 替换存储在 SQL Server 数据库列中的 XML 中的节点名 2021-01-01
- SSIS:在数据流中使用 System::TaskName 2021-01-01
- 哪个是 Rails 应用程序的最佳数据库? 2022-01-01
- (+) 在 Oracle SQL 中有什么作用? 2021-01-01
- 为 SQL Server 设置 Maven 依赖项 2021-01-01
- 如何将参数传递给使用 sqlcmd 调用的 SQL Server 脚本? 2021-01-01
- my.cnf 文件在 macOS 上的位置 2021-01-01
- 如何在没有密码提示的情况下执行 mysqldump? 2021-01-01