我还在学习JSF
,但在过去,我使用Swing
JDBC
和MySQL
作为RDBMS
创建了项目。所以我现在正在开展一个网络项目,以便更熟悉JSF
。
我在网上看到的大多数示例都使用了PreparedStatement
而且我还没有看到任何使用CallableStatement
我问这个是因为我认为我需要使用SQL Transactions
来执行任务。所以,CallableStatement
肯定会帮助我,而我过去实际上使用过CallableStatement
。
另外,我注意到在我看到的示例中,他们从未使用过自动关闭资源的try-with-resources
语法
请考虑下面的方法。
public void register() throws SQLException{
String myFirstName = this.getFirstName();
String myLastName = this.getLastName();
String myMiddleName = this.getMiddleName();
String myEmail = this.getEmail();
try{
Context context = new InitialContext();
dataSource = (DataSource)context.lookup("java:comp/env/jdbc/myDb");
}catch(NamingException e){
e.printStackTrace();
}
if(dataSource == null){
throw new SQLException("Can't get DataSource");
}
Connection connection = dataSource.getConnection();
if(connection == null){
throw new SQLException("Unable to connect to datasource");
}
try{
String SQL = "INSERT INTO customer (firstName,lastName,middleName,email) VALUES(?,?,?,?)";
PreparedStatement addCustomer = connection.prepareStatement(SQL);
addCustomer.setString(1, myFirstName);
addCustomer.setString(2, myLastName);
addCustomer.setString(3, myMiddleName);
addCustomer.setString(4, myEmail);
}finally{
connection.close();
}
}
我是否可以用
替换PreparedStatement addCustomer = connection.prepareStatement(SQL);
String SQL = "{call addCustomer (?,?,?,?)}";
callableStatement = conn.prepareCall(SQL);
如果没有,那么在SQL Transactions
Stored Procedures
中包含的JSF
的最佳解决方案是什么?
我很感激任何最有帮助的例子。
谢谢。