用Scala查询SQL数据库

用Scala查询SQL数据库,sql,database,scala,h2,Sql,Database,Scala,H2,我正在尝试对现有的H2数据库进行基本查询。我的连接工作正常,我能够返回一些数据,但数据是奇数,我实际上无法从表中获取列。这是我的密码: import java.sql.{Connection, DriverManager, ResultSet}; // Import necessary SQL libraries class H2 { val connection_string = "jdbc:h2:tcp://localhost//tmp/UXDemo;user=sa;password

我正在尝试对现有的H2数据库进行基本查询。我的连接工作正常,我能够返回一些数据,但数据是奇数,我实际上无法从表中获取列。这是我的密码:

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

我试着从一个列中选择,但它说该列不存在,所以我把它去掉,想看看结果是什么,它们没有多大意义。我的代码中是否缺少一些东西,或者是H2配置问题?

解决了这个问题。H2中的列名(至少在本例中)需要在其周围加引号。通过添加引号,我可以查询单个列。当我最初尝试这个方法时,它不起作用,可能是因为输入错误,所以我在executeQuery参数中切换到了三重引号。您还需要@Ashalynd建议的.getString(),以便它输出字符串

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

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

您是否尝试了results.getString之类的内容?因此我添加了
results.getString()
,并将列名
text
作为字符串,结果是正确的。但是,当我以
selecttext FROM“event”
的形式查询列时,我得到一个错误,它不存在。我是否总是需要使用
从“事件”
中选择*来查询所有内容?