我想知道如何在scala中执行以下操作?如何连接到scala中的postgreSQL数据库?
- 连接到postgreSQL数据库。
- 编写SELECT,UPDATE等SQL查询来修改该数据库中的表。
我知道在python中,我可以使用PygreSQL,但如何在scala中执行这些操作?
我想知道如何在scala中执行以下操作?如何连接到scala中的postgreSQL数据库?
我知道在python中,我可以使用PygreSQL,但如何在scala中执行这些操作?
看看教程"Using Scala with JDBC to connect to MySQL",更换db url并添加正确的jdbc库。链接有这么这里被打破的博客的内容:
使用Scala的使用JDBC连接到MySQL
一份HOWTO上Scala的使用JDBC连接到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
}
你需要下载使用mysql-connector罐子。
或者,如果您使用maven,pom片段来加载mysql连接器,则需要检查最新版本是什么。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.12</version>
</dependency>
要运行的例子中,保存以下到一个文件(query_test.scala),并使用下列指定的类路径到连接器罐运行:
scala -cp mysql-connector-java-5.1.12.jar:. query_test.scala
插入,更新和删除
要执行插入,更新或删除,您需要创建可更新的语句对象。执行命令略有不同,你很可能想使用某种参数。下面是一个使用带有参数的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
}
如果你想/需要编写自己的SQL,但讨厌的JDBC接口,看看O/R Broker
您需要添加依赖"org.postgresql" % "postgresql" % "9.3-1102-jdbc41"
在build.sbt中,您可以修改以下代码来连接和查询数据库。将DB_USER替换为您的数据库用户和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()
}
}
fyi,链接被破坏 – 2015-09-08 05:30:45
谢谢你,我已经修复了它 – 2015-09-08 09:02:05
是不是问题如何连接到postgres sql? – 2015-09-27 00:53:45