我想知道如何在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