2

我正在学习 querulous 并从以下代码开始:

import com.twitter.querulous.evaluator.QueryEvaluator
class Querulous {

  def test {
    val queryEvaluator = QueryEvaluator("org.h2.Driver", "jdbc:h2:tcp://localhost/~/test", "sa", "")
    val names = queryEvaluator.select("select (name) from mytable where id in (?)", List(1, 2, 3)) {
      row =>
        row.getString("name")
    }
    println(names)
  }
}

执行结果如下:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障

最后一个成功发送到服务器的数据包是 0 毫秒前。驱动程序没有收到来自服务器的任何数据包。在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor .newInstance(Constructor.java:513) 在 com。mysql .jdbc.Util.handleNewInstance(Util.java:409) 在 com。mysql .jdbc.SQLError.createCommunicationsException(SQLError.java:1118) 在 com。mysql .jdbc.MysqlIO.(MysqlIO.java:343) 在 com。mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2308) 在 com。mysql .jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122) 在 com。mysql .jdbc.ConnectionImpl.(ConnectionImpl.java:774) 在 com。mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:49) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl. java:27) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 在 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl .java:375) 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289) 在 java.sql.DriverManager.getConnection(DriverManager.java:582) 在 java.sql.DriverManager.getConnection(DriverManager.java: 185)在 org.apache.commons.dbcp。DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:75) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1148)在 org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) 在 com.twitter.querulous.database.ApachePoolingDatabase.open(ApachePoolingDatabase.scala:93) 在 com.twitter.querulous.database.Database$class .withConnection(Database.scala:33) 在 com.twitter.querulous.database.ApachePoolingDatabase.withConnection(ApachePoolingDatabase.scala:45) 在 com.twitter.querulous.evaluator.StandardQueryEvaluator.withTransaction(StandardQueryEvaluator.scala:66) 在 com。叽叽喳喳。evaluator.StandardQueryEvaluator.select(StandardQueryEvaluator.scala:23) at com.twitter.querulous.evaluator.QueryEvaluator$class.select(QueryEvaluator.scala:88) at com.twitter.querulous.evaluator.StandardQueryEvaluator.select(StandardQueryEvaluator.scala: 19) 在 org.database.Querulous.test(Querulous.scala:10) 在 org.database.Main$.main(Main.scala:4) 在 org.database.Main.main(Main.scala) 在 sun.reflect .NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method .java:597) 在 sbt.Run.run0(Run.scala:60) 在 sbt.Run.execute$1(Run.scala:47) 在 sbt.Run$$anonfun$run$2.apply(Run.scala:50) 在 sbt.Run$$anonfun$run$2.apply(Run.scala:50) 在 sbt.TrapExit$.executeMain$1(TrapExit .scala:33) at sbt.TrapExit$$anon$1.run(TrapExit.scala:42) 原因:java.net.UnknownHostException: org.h2.Driver at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) at java .net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850) 在 java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201) 在 java.net.InetAddress.getAllByName0(InetAddress.java:1154) 在 java.net.InetAddress .getAllByName(InetAddress.java:1084) 在 java.net.InetAddress.getAllByName(InetAddress.java:1020) 在 com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:275) 在 com.mysql.jdbc。MysqlIO.(MysqlIO.java:292) 在 com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2308) 在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122) 在 com.mysql.jdbc。 ConnectionImpl.(ConnectionImpl.java:774) 在 com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:49) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java: 39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:409 ) 在 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375) 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289) 在 java.sql.DriverManager.getConnection(DriverManager.java:582) 在 java.sql.DriverManager.getConnection(DriverManager.java:185) 在org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) 在 org.apache.commons.pool.impl.GenericObjectPool 的 org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:75)。 org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) 的借用对象(GenericObjectPool.java:1148) com.twitter.querulous.database.ApachePoolingDatabase.open(ApachePoolingDatabase.scala:93) com.twitter .querulous.database.Database$class。withConnection(Database.scala:33) at com.twitter.querulous.database.ApachePoolingDatabase.withConnection(ApachePoolingDatabase.scala:45) at com.twitter.querulous.evaluator.StandardQueryEvaluator.withTransaction(StandardQueryEvaluator.scala:66) at com.twitter .querulous.evaluator.StandardQueryEvaluator.select(StandardQueryEvaluator.scala:23) at com.twitter.querulous.evaluator.QueryEvaluator$class.select(QueryEvaluator.scala:88) at com.twitter.querulous.evaluator.StandardQueryEvaluator.select(StandardQueryEvaluator .scala:19) 在 org.database.Querulous.test(Querulous.scala:10) 在 org.database.Main$.main(Main.scala:4) 在 org.database.Main.main(Main.scala) 在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect。NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sbt.Run.run0(Run .scala:60) at sbt.Run.execute$1(Run.scala:47) at sbt.Run$$anonfun$run$2.apply(Run.scala:50) at sbt.Run$$anonfun$run$2.apply (Run.scala:50) at sbt.TrapExit$.executeMain$1(TrapExit.scala:33) at sbt.TrapExit$$anon$1.run(TrapExit.scala:42) [info] == run == [error]错误运行运行:非零退出代码:160) 在 sbt.Run.execute$1(Run.scala:47) 在 sbt.Run$$anonfun$run$2.apply(Run.scala:50) 在 sbt.Run$$anonfun$run$2.apply(Run. scala:50) at sbt.TrapExit$.executeMain$1(TrapExit.scala:33) at sbt.TrapExit$$anon$1.run(TrapExit.scala:42) [info] == run == [error] 运行错误:非零退出代码:160) 在 sbt.Run.execute$1(Run.scala:47) 在 sbt.Run$$anonfun$run$2.apply(Run.scala:50) 在 sbt.Run$$anonfun$run$2.apply(Run. scala:50) at sbt.TrapExit$.executeMain$1(TrapExit.scala:33) at sbt.TrapExit$$anon$1.run(TrapExit.scala:42) [info] == run == [error] 运行错误:非零退出代码:1

至于我,它看起来不是很好。似乎querulous只能与mysql rdbms一起使用。真的吗?其次,有一堆乱七八糟的项目1 2 3 4指令略有不同,例如,从1

val queryEvaluator = QueryEvaluator("host", "username", "password")

(我没有弄清楚“主机”是什么意思)

2开始:

val queryEvaluator = QueryEvaluator("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/mydb", "用户名", "密码")

(以此为样本)

最后,我使用 "com.twitter" % "querulous_2.8.0" % "1.5.0" 作为二进制文件并克隆了 git://github.com/twitter/querulous.git 以获得源(没有 1.5 源可供下载) 但他们没有任何评论。

那么,问题:querulous 可以与 mysql 以外的数据库一起使用吗?如果是这样,请指定示例如何连接它;斯卡拉多克位置;正常(带注释)来源位置。

4

1 回答 1

4

这个分叉声称更像是 Querulous 的香草版本:

https://github.com/ollekullberg/querulous-light

从他们的自述文件中:

关于这个 Fork 的注意事项

这是 Querulous-generic 的一个分支(Querulous-generic 又是 Twitter 版本的一个分支)。这个分叉将:

  • 使用 Scala 2.8
  • 在所有 RDBM 上工作(好吧,我只尝试过 H2,所以我真的不知道)
  • 对 Twitters StandardProject 模块没有任何依赖关系。

更高级的功能(超时等)可能不起作用,因为我必须破坏一些代码才能到达这里。

虽然我使用 querulous,但我只将它与 mysql 一起使用,并且自己没有尝试过这个 fork。

于 2010-12-26T21:23:11.287 回答