在scala中访问postgresql(使用sbt)
默認已經安裝了scala和SBT,并且對sbt有基本了解,知道怎樣用sbt建立一個工程。
添加依賴
要在scala中使用postgresql數據庫,需要導入postgresql驅動相關的庫文件,postgresql的庫文件,可以去其官網上下載,一定要下載和你的scala、Jdk對應的版本。現在有兩種途徑可以在scala工程編譯時添加這個postgresql庫:
1. 自己下載這個依賴庫,是一個jar文件,把這個文件放到sbt工程目錄下的lib\下
2. 不用自己下載這個依賴庫,在build.sbt中聲明依賴這個文件,在編譯的過程中sbt會自動下載這個庫文件,并添加這個庫。在sbt的幫助文件中告訴了如何添加這個依賴的語法
libraryDependencies += groupID % artifactID % revision % configuration
那么現在問題來了,我只知道我需要postgresql,哪里知道groupID、artifactID這些東東是什么,給大家一個匯合了許多庫文件的網站, 在這個網站中搜索postgresql,在搜索結果中就給出了postgresql驅動庫的groupID、artifactID這些信息
根據這些信息,就知道應該在build.sbt文件中這么寫依賴項了
libraryDependencies += “org.postgresql” % “postgresql” % “9.4-1201-jdbc41” % “provided”
整個build.sbt就是
name := "Task3" version := "1.0" scalaVersion := "2.10.5" libraryDependencies += "org.postgresql" % "postgresql" % "9.4-1201-jdbc41" % "provided"這么寫了之后,編譯應該不會出問題了,使用sbt package可以講工程打包成jar。但是仍然不能運行,運行會出現class not found之類的錯誤。因為還需要把postgresql依賴庫文件的位置添加到Java的classpath中,這樣運行就不會出問題了。
使用postgresql
基本查詢
val conn_str = "jdbc:postgresql://IP地址:端口號/數據庫名稱" classOf[com.mysql.jdbc.Driver] // 使用上一句可能會有warning,因為這是一個表達式,可以換成下面的 // Class.forName("org.postgresql.Driver").newInstance val conn = DriverManager.getConnection(conn_str, "用戶名稱", "密碼") val conn = DriverManager.getConnection(conn_str) try {// Configure to be Read Onlyval statement = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)// Execute Queryval rs = statement.executeQuery("SELECT quote FROM quotes LIMIT 5")// Iterate Over ResultSetwhile (rs.next) {println(rs.getString("quote"))}}finally {conn.close }表操作(Insert,update,delete)
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 inserttry {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}總結
以上是生活随笔為你收集整理的在scala中访问postgresql(使用sbt)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Matlab画心形线
- 下一篇: 选带傅里叶变换(zoom-fft)