package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class BaseDao { private String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; private String url = "jdbc:sqlserver://localhost:1433;databaseName=EasyBuy"; private String user = "sa"; private String password = "sa"; /** * 获取数据库连接对象 * * @return */ public Connection getcConnection() { Connection conn = null; try { Class.forName(driver); conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace(); } return conn; } /** * 关闭数据库连接对象 * @param rs * @param pstmt * @param conn */ public void closeAll(ResultSet rs,PreparedStatement pstmt,Connection conn){ try { if(rs!=null){ rs.close(); } if(pstmt!=null){ pstmt.close(); } if(conn!=null){ conn.close(); } } catch (Exception e) { e.printStackTrace(); } } /** * 增删改方法 * @param sql * @param objects * @return */ public int executeUpdate(String sql,Object[] objects){ int num=0; PreparedStatement pstmt=null; Connection conn=getcConnection(); try { pstmt=conn.prepareStatement(sql); for (int i = 0; i < objects.length; i++) { pstmt.setObject(i+1,objects[i]); } num=pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally{ closeAll(null, pstmt, conn); } return num; } }
上述是java连接数据库的具体步骤,关闭数据库的话,肯定是先关查询结果rs,再关闭pstmt,再关闭conn而打开反之~~,这里的三个对像应该是创建连接,创建查询,和查询结果。
要想清楚是先有连接,再创建查询,才会返回结果。
对于pstmt.setObject(i+1, objects[i]);这行代码,因为在方法引用了可变参数(为什么要引用可变参数,是因为前面是字符串,后面是数据库语句,类型不匹配),所谓可变参数就是:适用于参数个数不确定,类型不确定的情况,java把可变参数当做数组处理,但不是数组,功能比数组强,可以变成没有参数,或者为空。而这行代码就是将数据库语句赋值给参数,因为参数是从1开始的,故要写成i+1.
时间: 2024-10-25 07:37:59