Employees是另一个类中列出的对象。它包含字段name
,department
和experience
。我使用main方法创建一个Swing对象,接受任何新员工,并调用addEmployees
类。
如果我想在这个类中创建更多调用数据库的方法?我是否需要创建try/catch
,将变量'connector'设置为整个过程?
如果我想在同一个类中创建仅设置name
和department
的方法,该怎么办?我是否需要添加冗余代码?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class AddEmployees {
public String addEmployee(String name, String department, int experience){
Connection connector = null;
PreparedStatement stmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
// Load a connection to my DB
String url = "jdbc:mysql://localhost:3306/myjobsite";
connector = DriverManager.getConnection(url, "golden", "password");
String sql="INSERT INTO employees(name,department,experience) values(?,?,?)";
stmt = connector.prepareStatement(sql);
stmt.setString(1, name);
stmt.setString(2, department);
stmt.setInt(3, experience);
stmt.execute(); //run sql
} catch (SQLException e) {
// TODO Auto-generated catch block
return "Connection Failure";
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "Executed sql";
}
}
答案 0 :(得分:1)
你避免重复代码的本能是一个很好的。干(不要重复自己)应该是所有程序员的基础。
我建议从Spring及其JdbcTemplate开始,而不是从头开始编写整个持久层。他们在设计API方面做得非常出色,可以让您专注于应用程序所需的内容。
答案 1 :(得分:1)
对于初学者来说,您可以将连接部分放在自己的方法中,如下所示:
public void connectToDb(){
try {
Class.forName("com.mysql.jdbc.Driver");
// Load a connection to my DB
String url = "jdbc:mysql://localhost:3306/myjobsite";
connector = DriverManager.getConnection(url, "golden", "password");
} catch (SQLException e) {
// TODO Auto-generated catch block
return "Connection Failure";
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
然后,只要您尝试启动数据库会话,就可以调用此方法,这样您就可以将实际连接与您必须编写的查询分开:
public String employeMethod(){
connectToDb();
//write your query stuff here
}
答案 2 :(得分:0)
如果可以将Spring添加到项目中,那么可以使用JdbcTemplate来大大简化数据库访问代码。
您的代码可能如下所示:
this.jdbcTemplate.update("INSERT INTO employees(name,department,experience) values(?,?,?)",
getName(), getDepartment(), getExperience());