首页 文章

如何使用slick 3.0.1连接到Oracle DB?

提问于
浏览
2

我开始学习和试验光滑 .

我正在尝试连接到由我们的DBA设置的oracle开发数据库 .

但是,我遇到问题,我无法连接 .

这是我到目前为止所做的:

oracledev = {
url =“jdbc:oracle:thin:@ // vdevdbms2:4208 / TPSDEV.IADB.ORG”
driver = com.typesafe.slick.driver.oracle.OracleDriver
connectionPool =禁用
keepAliveConnection = true
}

我的构建中有以下内容

resolvers =“Typesafe Releases”在“http://repo.typesafe.com/typesafe/maven-releases/”

libraryDependencies =
SEQ(
“com.smartlogic.osclient”%“Semaphore-OS-Client”%“Semaphore-3.7.2”,
“com.typesafe.slick”%%“slick-extensions”%“3.1.0”,
“org.slf4j”%“slf4j-nop”%“1.6.4”

到目前为止,代码很简单:

object SlickSpike extends App {

  val db = Database.forConfig("oracledev")

}

我收到以下错误:

线程“main”中的异常java.lang.ClassNotFoundException:在java.lang.ClassLoader.findClass(ClassLoader.java:530)java.lang.ClassLoader上的java.lang.ClassLoader.loadClass(ClassLoader.java:424)中禁用.loadClass(ClassLoader.java:357)位于slick.jdbc的slick.udb.ClassLoaderUtil $$ anon $ 1.loadClass(ClassLoaderUtil.scala:12)at slick.jdbc.JdbcDataSource $ .loadFactory $ 1(JdbcDataSource.scala:30) . JdbcDataSource $ .forConfig(JdbcDataSource.scala:39)at slick.jdbc.JdbcBackend $ DatabaseFactoryDef $ class.forConfig(JdbcBackend.scala:268)at slick.jdbc.JdbcBackend $$ anon $ 3.forConfig(JdbcBackend.scala:33)at at SlickSpike $ .delayedEndpoint $ SlickSpike $ 1(SlickSpike.scala:16)at sclick.SpiS $ delayedInit $ body.apply(SlickSpike.scala:14)scala.Function0 $ class.apply $ mcV $ sp(Function0.scala:34)at scala .runtime.AbstractFunction0.apply $ mcV $ sp(AbstractFunction0.scala:12)at scala.App $$ anonfun $ main $ 1.apply(App.scala:76)at scala.App $$ anonfun $ main $ 1.apply(App .scala:76)at scala.collection.immutable.List.foreach(Li st.scala:381)scala.collection.generic.TraversableForwarder $ class.foreach(TraversableForwarder.scala:35)at scala.App $ class.main(App.scala:76)at SlickSpike $ .main(SlickSpike.scala: 14)在SlickSpike.main(SlickSpike.scala)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java :43)at com.intellij.rt.execution.application.AppMain.main的java.lang.reflect.Method.invoke(Method.java:483)(AppMain.java:144)

如果我删除该行:**

connectionPool =禁用

**

然后我收到以下错误:

线程“main”中的异常java.lang.ClassNotFoundException:slick.jdbc.hikaricp.HikariCPJdbcDataSource $ at java.lang.ClassLoader.findClass(ClassLoader.java:530)at java.lang.ClassLoader.loadClass(ClassLoader.java:424 )在slick.udb.ClassLoaderUtil上的java.lang.ClassLoader.loadClass(ClassLoader.java:357)中,在slick.jdbc.JdbcDataSource $ .loadFactory $ 1中的anon $ 1.loadClass(ClassLoaderUtil.scala:12)(JdbcDataSource.scala: 30)at slick.jdbc.JdbcDataSource $ .forConfig(JdbcDataSource.scala:35)at slick.jdbc.JdbcBackend $ DatabaseFactoryDef $ class.forConfig(JdbcBackend.scala:268)at slick.jdbc.JdbcBackend $$ anon $ 3.forConfig( JdbcBackend.scala:33)在SlickSpike $ .delayedEndpoint $ SlickSpike $ 1(SlickSpike.scala:16)at SlickSpike $ delayedInit $ body.apply(SlickSpike.scala:14)at scala.Function0 $ class.apply $ mcV $ sp(Function0 .scala:34)scala.run上的scala.runtime.AbstractFunction0.apply $ mcV $ sp(AbstractFunction0.scala:12)scala.App $$ anonfun $ main $ 1.apply(App.scala:76)at scala.App $$ anonfun在scala上$ main $ 1.apply(App.scala:76) . collection.immutable.List.foreach(List.scala:381)at scala.collection.generic.TraversableForwarder $ class.foreach(TraversableForwarder.scala:35)at scala.App $ class.main(App.scala:76)at SlickSpike SlickSpike.main上的$ .main(SlickSpike.scala:14)(SlickSpike.scala)

我究竟做错了什么 ?

我只想,有一个10的连接池,并连接到数据库,但我不知道如何设置它 . 有人可以帮忙吗?

Edit2

我解决了最初的问题,但我仍然有疑问,无法让一切工作 .

我改变了我的构建:

libraryDependencies =
SEQ(
“org.slf4j”%“slf4j-api”%“1.7.13”,
“org.slf4j”%“slf4j-simple”%“1.7.13”,
“com.smartlogic.osclient”%“Semaphore-OS-Client”%“Semaphore-3.7.2”exclude(“org.slf4j”,“slf4j-log4j12”),
“com.typesafe.slick”%%“slick”%“3.1.0”,
“com.typesafe.slick”%%“slick-extensions”%“3.1.0”,
“com.typesafe.slick”%%“slick-hikaricp”%“3.1.0”,
“com.oracle”%“ojdbc6”%“11.2.0.2.0”

我甚至使用了添加 slick-hikaricp 如果我不打算原来使用 . 我现在也明白配置中的oracle驱动程序是实际的oracle驱动器,而不是光滑的驱动器 . 这实际上反映在我对配置所做的更改中,如下所示:

oracledev = {
url =“jdbc:oracle:thin:@ // vdevdbms2:4208 / TPSDEV.IADB.ORG”
driver = oracle.jdbc.OracleDriver
// connectionPool = disable
keepAliveConnection = true
// databaseName =“BRIKPOOLPARTYDEV”
user =“***
密码=“
***”
}

Questions:

1 - 使用Oracle时,默认情况下需要 slick-hikaricp . 事实上,如果我不添加它并注释 connectionPool = disable ,在我的情况下,无论如何在取消注释时都不起作用,程序不会编译 .

2 - 我仍然无法连接,我错过了什么?

请帮忙

2 回答

  • 0

    您应该下载ojdbc7.jar并将其放在根项目(lib)的文件夹中并重建它 .

  • 1

    oracle,db2和ms sql驱动程序不是免费的 . 有一个单独的'slick-extensions'包,其中包含可用于开发的驱动程序 . 但是你必须把冷钱用于 生产环境 用途 .

相关问题