2014-09-25 123 views
0

我正在嘗試對現有H2數據庫進行基本查詢。我的連接工作正常,我能夠獲取一些數據,但數據很奇怪,我實際上無法從表中獲取一列。這裏是我的代碼:用Scala查詢SQL數據庫

import java.sql.{Connection, DriverManager, ResultSet}; // Import necessary SQL libraries 

class H2 { 

    val connection_string = "jdbc:h2:tcp://localhost//tmp/UXDemo;user=sa;password=admin" 

    Class.forName("org.h2.Driver") // Make a call to H2 Driver so it can be used 

    def read = { 

    // Create a Connection Object 
    val connection = DriverManager.getConnection(connection_string) 

    try { 

     // Ensure SQL Statements are Read-Only 
     val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY) 

     // Execute Given SQL Query 
     val results = statement.executeQuery("SELECT * FROM \"event\"") 

     while (results.next()) { 
     println(results) 
     } 

    } finally { 

     connection.close 

    } 


    } 

} 

當我運行它,它編譯罰款,我得到這個回報:

s0: columns: 6 rows: 72 pos: 0 
rs0: columns: 6 rows: 72 pos: 1 
rs0: columns: 6 rows: 72 pos: 2 
rs0: columns: 6 rows: 72 pos: 3 
rs0: columns: 6 rows: 72 pos: 4 
rs0: columns: 6 rows: 72 pos: 5 
rs0: columns: 6 rows: 72 pos: 6 
rs0: columns: 6 rows: 72 pos: 7 
rs0: columns: 6 rows: 72 pos: 8 
rs0: columns: 6 rows: 72 pos: 9 
rs0: columns: 6 rows: 72 pos: 10 
rs0: columns: 6 rows: 72 pos: 11 
rs0: columns: 6 rows: 72 pos: 12 
rs0: columns: 6 rows: 72 pos: 13 
rs0: columns: 6 rows: 72 pos: 14 
rs0: columns: 6 rows: 72 pos: 15 
rs0: columns: 6 rows: 72 pos: 16 
rs0: columns: 6 rows: 72 pos: 17 
rs0: columns: 6 rows: 72 pos: 18 
rs0: columns: 6 rows: 72 pos: 19 
rs0: columns: 6 rows: 72 pos: 20 
rs0: columns: 6 rows: 72 pos: 21 
rs0: columns: 6 rows: 72 pos: 22 
rs0: columns: 6 rows: 72 pos: 23 
rs0: columns: 6 rows: 72 pos: 24 
rs0: columns: 6 rows: 72 pos: 25 
rs0: columns: 6 rows: 72 pos: 26 
rs0: columns: 6 rows: 72 pos: 27 
rs0: columns: 6 rows: 72 pos: 28 
rs0: columns: 6 rows: 72 pos: 29 
rs0: columns: 6 rows: 72 pos: 30 
rs0: columns: 6 rows: 72 pos: 31 
rs0: columns: 6 rows: 72 pos: 32 
rs0: columns: 6 rows: 72 pos: 33 
rs0: columns: 6 rows: 72 pos: 34 
rs0: columns: 6 rows: 72 pos: 35 
rs0: columns: 6 rows: 72 pos: 36 
rs0: columns: 6 rows: 72 pos: 37 
rs0: columns: 6 rows: 72 pos: 38 
rs0: columns: 6 rows: 72 pos: 39 
rs0: columns: 6 rows: 72 pos: 40 
rs0: columns: 6 rows: 72 pos: 41 
rs0: columns: 6 rows: 72 pos: 42 
rs0: columns: 6 rows: 72 pos: 43 
rs0: columns: 6 rows: 72 pos: 44 
rs0: columns: 6 rows: 72 pos: 45 
rs0: columns: 6 rows: 72 pos: 46 
rs0: columns: 6 rows: 72 pos: 47 
rs0: columns: 6 rows: 72 pos: 48 
rs0: columns: 6 rows: 72 pos: 49 
rs0: columns: 6 rows: 72 pos: 50 
rs0: columns: 6 rows: 72 pos: 51 
rs0: columns: 6 rows: 72 pos: 52 
rs0: columns: 6 rows: 72 pos: 53 
rs0: columns: 6 rows: 72 pos: 54 
rs0: columns: 6 rows: 72 pos: 55 
rs0: columns: 6 rows: 72 pos: 56 
rs0: columns: 6 rows: 72 pos: 57 
rs0: columns: 6 rows: 72 pos: 58 
rs0: columns: 6 rows: 72 pos: 59 
rs0: columns: 6 rows: 72 pos: 60 
rs0: columns: 6 rows: 72 pos: 61 
rs0: columns: 6 rows: 72 pos: 62 
rs0: columns: 6 rows: 72 pos: 63 
rs0: columns: 6 rows: 72 pos: 64 
rs0: columns: 6 rows: 72 pos: 65 
rs0: columns: 6 rows: 72 pos: 66 
rs0: columns: 6 rows: 72 pos: 67 
rs0: columns: 6 rows: 72 pos: 68 
rs0: columns: 6 rows: 72 pos: 69 
rs0: columns: 6 rows: 72 pos: 70 
rs0: columns: 6 rows: 72 pos: 71 

我從一列試圖實際上SELECT,但它說,該列沒有按」所以我把它剝離出來,想看看裸露的結果是什麼,它們沒有多大意義。我的代碼中是否存在某些內容,或者是H2配置問題?

+1

你試過類似results.getString的東西嗎? – Ashalynd 2014-09-25 14:53:11

+0

因此,我添加了'results.getString()',並將列名稱'text'作爲字符串,並且它恢復正確。但是,當我查詢列爲「SELECT text FROM」事件「'我收到一個錯誤,它不存在。我是否總是需要用'SELECT * FROM'事件「'查詢所有內容? – AmericanKryptonite 2014-09-25 14:59:48

回答

1

找出問題所在。 H2中的列名(至少在這種情況下)需要引號。通過添加引號,我可以查詢單個列。當我最初嘗試這樣做時,它不起作用,可能是因爲輸入錯誤,所以我切換到了executeQuery params中的三重引號。您還需要將.getString()作爲@Ashalynd建議,以便輸出字符串。

val results = statement.executeQuery(""" SELECT "text" FROM "event" """) 

     while (results.next) { 
     println(results.getString("text")) 
     }