我想知道如何在scala中执行以下操作?
我知道在python中我可以使用PygreSQL来做但是如何在scala中做这些事情?
Bor*_*vić 13
看一下教程"使用Scala with JDBC连接到MySQL",替换db url并添加正确的jdbc库.链接破了所以这里是博客的内容:
使用Scala和JDBC连接到MySQL
使用JDBC将Scala连接到MySQL数据库的方法.Scala有许多数据库库,但我遇到了一个问题,让大部分数据库都可以运行.我试图使用scala.dbc,scala.dbc2,Scala Query和Querulous,但它们不受支持,具有非常有限的特征集或将SQL抽象为奇怪的伪语言.
Play Framework有一个名为ANorm的新数据库,它试图将接口保持为基本SQL,但稍微改进了scala接口.陪审团对我来说仍然没有,到目前为止只用于一个项目.此外,我只看到它在Play应用程序中工作,看起来不太容易被提取出来.
所以我最终使用基本的Java JDBC连接,结果证明这是一个相当简单的解决方案.
以下是使用Scala和JDBC访问数据库的代码.您需要更改连接字符串参数并修改数据库的查询.这个例子适用于MySQL,但任何Java JDBC驱动程序都应该与Scala一样.
基本查询
import java.sql.{Connection, DriverManager, ResultSet};
// Change to Your Database Config
val conn_str = "jdbc:mysql://localhost:3306/DBNAME?user=DBUSER&password=DBPWD"
// Load the driver
classOf[com.mysql.jdbc.Driver]
// Setup the connection
val conn = DriverManager.getConnection(conn_str)
try {
// Configure to be Read Only
val statement = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
// Execute Query
val rs = statement.executeQuery("SELECT quote FROM quotes LIMIT 5")
// Iterate Over ResultSet
while (rs.next) {
println(rs.getString("quote"))
}
}
finally {
conn.close
}
Run Code Online (Sandbox Code Playgroud)
您需要下载mysql-connector jar.
或者如果你使用maven,pom片段加载mysql连接器,你需要检查最新版本是什么.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.12</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
要运行该示例,请将以下内容保存到文件(query_test.scala)并运行,以下指定连接器jar的类路径:
scala -cp mysql-connector-java-5.1.12.jar:. query_test.scala
Run Code Online (Sandbox Code Playgroud)
插入,更新和删除
要执行插入,更新或删除,您需要创建可更新的语句对象.execute命令略有不同,您很可能想要使用某种参数.这是一个使用带有参数的jdbc和scala进行插入的示例.
// create database connection
val dbc = "jdbc:mysql://localhost:3306/DBNAME?user=DBUSER&password=DBPWD"
classOf[com.mysql.jdbc.Driver]
val conn = DriverManager.getConnection(dbc)
val statement = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE)
// do database insert
try {
val prep = conn.prepareStatement("INSERT INTO quotes (quote, author) VALUES (?, ?) ")
prep.setString(1, "Nothing great was ever achieved without enthusiasm.")
prep.setString(2, "Ralph Waldo Emerson")
prep.executeUpdate
}
finally {
conn.close
}
Run Code Online (Sandbox Code Playgroud)
小智 9
您需要"org.postgresql" % "postgresql" % "9.3-1102-jdbc41"在build.sbt中添加依赖项,并且可以修改以下代码以连接和查询数据库.将DB_USER替换为db用户和DB_NAME作为数据库名称.
import java.sql.{Connection, DriverManager, ResultSet}
object pgconn extends App {
println("Postgres connector")
classOf[org.postgresql.Driver]
val con_st = "jdbc:postgresql://localhost:5432/DB_NAME?user=DB_USER"
val conn = DriverManager.getConnection(con_str)
try {
val stm = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
val rs = stm.executeQuery("SELECT * from Users")
while(rs.next) {
println(rs.getString("quote"))
}
} finally {
conn.close()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24510 次 |
| 最近记录: |