2014-09-25 2 views
0

기존 H2 데이터베이스의 기본 쿼리를 수행하려고합니다. 내 연결이 잘 작동하고 일부 데이터를 다시 가져올 수 있지만 데이터가 이상한 및 실제로 테이블에서 열을 가져올 수 없습니다. 여기에 내 코드입니다 :이 프로그램을 실행할 때스칼라로 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

+0

그래서'results.getString()'을 추가하고 문자열 이름'text'을 문자열로 넣어서 올바른 것으로 돌아 왔습니다. 그러나 'SELECT text FROM "이벤트"로 열을 쿼리 할 때 "존재하지 않는다는 오류가 발생합니다. 'SELECT * FROM "이벤트"로 항상 모든 것을 쿼리해야합니까? – AmericanKryptonite

답변

1

문제를 파악했습니다. H2의 열 이름 (이 경우 최소한)은 따옴표가 필요합니다. 따옴표를 추가하여 개별 열을 쿼리 할 수있었습니다. 내가 원래 이것을 시도했을 때 오타가 있었기 때문에 작동하지 않았다. 그래서 나는 executeQuery params에서 트리플 따옴표로 바꿨다. 또한 문자열을 출력하도록 @Ashalynd가 권장하는대로 .getString()이 필요합니다.

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

     while (results.next) { 
     println(results.getString("text")) 
     } 
관련 문제