以前如果我的方法里需要去执行sql,我每个方法都写了一遍调连接数据库和操作sql的代码,重复的代码怎么避免?
于是改为:
1.写一个专门连接和操作sql的类,里面放2个方法,一个连接的,一个操作sql的,操作sql的里调用连接的,这样我以后只要调操作sql的方法就行了
2.连接信息和sql语句,我作为参数,调执行sql的方法时传过来,参数值可写在枚举里
具体请看代码
public class OperateDB {
/**连接数据库*/
public static Connection getConnection(String username,String pwd,String url) {
Connection conn = null;
try {
System.out.println("加载数据库驱动成功");
conn= DriverManager.getConnection(url,username,pwd);
System.out.println("连接数据库成功");
} catch (SQLException e) {
System.out.println("SQL异常");
}
return conn;
}
/**更新数据库*/
public static void doSql(String username, String pwd, String url, String sql1,String sql2,String statusdb,String id){
try {
Connection conn = OperateDB.getConnection(username,pwd,url);
Statement stmt=conn.createStatement();
String sql = sql1+statusdb+sql2+id;
stmt.executeUpdate(sql);
System.out.println("数据更新成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
枚举:
public enum DoSqlEnum{
/**CONNORDER连接和操作订单表
* CONNCREDIT连接和操作授信单表*/
CONNORDER("写你的数据库用户名","密码","你的jdbc:mysql://tes...","你的sql,UPDATE order_base SET status=" ," where wb_id="),
CONNCREDIT("...","...","jdbc:mysql://..?useSSL=true","UPDATE credit SET status="," where wb_id=");
private String username;
private String pwd;
private String url;
private String sql1;
private String sql2;
private DoSqlEnum(String username,String pwd, String url,String sql1,String sql2){
this.username = username;
this.pwd = pwd;
this.url = url;
this.sql1 = sql1;
this.sql2 = sql2;
}
public String getUsername(){return this.username;}
public String getPwd(){return this.pwd;}
public String getUrl(){return this.url;}
public String getSql1(){return this.sql1;}
public String getSql2(){return this.sql2;}
}
调用操作sql的方法:
OperateDB.doSql(DoSqlEnum.CONNORDER.getUsername(),DoSqlEnum.CONNORDER.getPwd(),DoSqlEnum.CONNORDER.getUrl(),DoSqlEnum.CONNORDER.getSql1(),DoSqlEnum.CONNORDER.getSql2(),statusdb,id);