最简单的方式是使用JDBC,就像任何JDBC教程描述的那样,使用java.sql.DriverManager。这里有一个例子,将姓名和电子邮件存入MySQL[65]数据库。
<window title="JDBC demo" border="normal">
<zscript><![CDATA[
import java.sql.*;
void submit() {
//load driver and get a database connetion
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost/test?user=root&password=my-password");
PreparedStatement stmt = null;
try {
stmt = conn.prepareStatement("INSERT INTO user values(?, ?)");
//insert what end user entered into database table
stmt.set(1, name.value);
stmt.set(2, email.value);
//execute the statement
stmt.executeUpdate();
} finally { //cleanup
if (stmt != null) {
try {
stmt.close();
} catch (SQLException ex) {
log.error(ex); //log and ignore
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException ex) {
log.error(ex); //log and ignore
}
}
}
}
</zscript>
<vbox>
<hbox>Name : <textbox id="name"/></hbox>
<hbox>Email: <textbox id="email"/></hbox>
<button label="submit" onClick="submit()"/>
</vbox>
</window>
尽管简单,但并不推荐这样做。毕竟ZK应用程序是基于Web的,加载是难以预测且宝贵的资源,例如数据库连接,必须要有效的管理。
很幸运,所有的J2EE框架和Web服务器都支持一种称为连接池(connection pooling)的功能。很容易使用连接池,且用于管理数据库连接更好。在下一章节我们会讨论更多。
[提示]: 不同与其它Web应程序,可以和ZK使用DriverManager,尽管不推荐这样做。
首先,你需要在桌面缓存连接,为每一个事件重复使用此连接,当桌面失效时关闭连接。就像传统的客户端/服务器应用程序一样工作。 就像客户端/服务器应用程序,这样会有效的运作,仅当最多有数十个并发用户时。
为了得知桌面何时失效,你需要通过org.zkoss.zk.ui.util.DesktopCleanup 实现一个监听器。