在scala中訪問postgresql(使用sbt),scalapostgresql

來源:互聯網
上載者:User

在scala中訪問postgresql(使用sbt),scalapostgresql

預設已經安裝了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").newInstanceval conn = DriverManager.getConnection(conn_str, "使用者名稱稱", "密碼")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    }
表操作(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 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  }

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.