2015-11-16 25 views
1

所以我有類似下面的代碼塊打印出數據:如何訪問並與sql2o

public class Task { 

private Long id; 
private String description; 
private Date dueDate; 

// getters and setters here 

public List<Task> getAllTasks(){ 
String sql = 
    "SELECT id, description, duedate " + 
    "FROM tasks"; 

try(Connection con = sql2o.open()) { 
    return con.createQuery(sql).executeAndFetch(Task.class); 
} 
} 
} 

(還有一個的getID方法和getDesc方法離開了) 我可以運行類似這讓在列表中返回的對象:

Task myTask1 = Task.getAllTasks().get(0); 

如果我嘗試並從中打印ID或遞減,像這樣

System.out.println(myTask1.getID()); 
System.out.println(myTask1.getDesc()); 

我總是得到0和null,這不是正確的值。我需要做些什麼來實現這個目標?

+0

您的代碼應該可以工作!你正在訪問哪個數據庫?你是否試圖循環結果,而不是隻打印第一個值? – aaberg

回答

0

如果您只是想打印SQL結果,則可以調用executeAndFetchTable()並迭代返回的org.sql2o.data.Table對象。以下是示例代碼:

import org.junit.Test; 
import org.sql2o.Connection; 
import org.sql2o.Sql2o; 

public class Sql2oTest { 
    @Test 
    public void testSql2oTable() { 
     Sql2o sql2o = new Sql2o("jdbc:postgresql://10.9.8.7:5432/testdb", "utest", "password"); 
     try (Connection con = sql2o.open()) { 
      con.createQuery("SELECT * FROM pg_catalog.pg_tables") 
       .executeAndFetchTable() // No entity class needed 
       .rows()     // List<org.sql2o.data.Row> 
       .stream()    // Java 8 stream 
       .forEach(row ->   // print what you want 
        System.out.println(row.getString(1) + 
         ", " + row.getObject(2) + 
         ", " + row.getObject("hasindexes"))); 
     } 
    } 
}