[英]how to pass sql array values from java controller to scala template
我是玩框架的新手。 我想將java控制器中的數組變量傳遞給scala模板。
try {
String userName = "data";
String password = "data";
String url = "jdbc:mysql://localhost/playdb";
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection(url, userName, password);
Statement stmt = con.createStatement();
System.out.println("Connected database successfully...");
String strSelect = "select * from computer";
//statement.setString(1, name);
ResultSet rset = stmt.executeQuery(strSelect);
while(rset.next()) { // Move the cursor to the next row
String name = rset.getString("name");
int id = rset.getInt("id");
System.out.println( name + ", " + id);
// ++rowCount;
}
}
catch(SQLException e) {
e.printStackTrace();
System.out.println("cant Connected database successfully...");
}
Form<Computer> computerForm = form(Computer.class);
return ok(
createForm.render(computerForm,rset)
);
和斯卡拉神廟
@(computerForm: Form[Computer],createFormRset: String)
我得到了錯誤
cannot find symbol [symbol: variable rset] [location: class controllers.Application]
我需要將rset
值傳遞給scala template。 但我不知道該如何幫助我
您需要在try塊之外聲明rset
:
ResultSet rset = null;
try {
String userName = "data";
String password = "data";
String url = "jdbc:mysql://localhost/playdb";
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection(url, userName, password);
Statement stmt = con.createStatement();
System.out.println("Connected database successfully...");
String strSelect = "select * from computer";
//statement.setString(1, name);
rset = stmt.executeQuery(strSelect);
while(rset.next()) { // Move the cursor to the next row
String name = rset.getString("name");
int id = rset.getInt("id");
System.out.println( name + ", " + id);
// ++rowCount;
}
}
catch(SQLException e) {
e.printStackTrace();
System.out.println("cant Connected database successfully...");
}
Form<Computer> computerForm = form(Computer.class);
return ok(
createForm.render(computerForm,rset)
);
這個解決方案並不是很漂亮,因為如果發生SQL異常,則rset
將為null,並且您將在模板中遇到麻煩( NullPinterException
)。 您可能要考慮將return語句移到try塊的末尾,然后將另一條語句添加到catch塊中以進行錯誤處理。
基本上,您可以將任何Java對象傳遞給模板。 Play框架對視圖進行類型檢查,因此您必須聲明rset。 如果查看Play附帶的計算機數據庫示例,您會看到它傳遞了Page對象和三個字符串:
@(currentPage: com.avaje.ebean.Page[Computer], currentSortBy: String, currentOrder: String, currentFilter: String)
但是,您可能會發現將rset中的值復制到您的computerForm對象或另一個POJO中並將其傳遞到模板更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.