我正在学习 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 以外的数据库一起使用吗?如果是这样,请指定示例如何连接它;斯卡拉多克位置;正常(带注释)来源位置。