Java JDBC避免了写入数据库的方法中的冗余代码?

时间:2016-08-11 18:17:27

标签: java mysql jdbc

Employees是另一个类中列出的对象。它包含字段namedepartmentexperience。我使用main方法创建一个Swing对象,接受任何新员工,并调用addEmployees类。

如果我想在这个类中创建更多调用数据库的方法?我是否需要创建try/catch,将变量'connector'设置为整个过程? 如果我想在同一个类中创建仅设置namedepartment的方法,该怎么办?我是否需要添加冗余代码?

    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";


}

}

3 个答案:

答案 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());