一、用到的接口和类以及工具
接口和类
DriverManager :驱动管理器,用来加载连接数据库的驱动
Connection :数据库连接
Statement :负责执行SQL语句
PreparedStatement :负责执行SQL语句,具有预先编译部分语句的功能,可以防止SQL注入
ResultSet :执行SQL语句后返回的结果集
工具:
c3p0 :连接池 (c3p0-0.9.1.2.jar)
二、具体顺序
①加载Mysql的驱动
两种方式:<1>DriverManager.rdegisterDriver(new Driver());
<2>Class.forName(“com.mysql.jdbc.Driver”);
第一种方式会在DriverMannager中注册两个驱动,因为registerDriver()方法中还会再次实例化一个Driver,为了解决这个问题,用第二种方式,运用反射可以只创建一个驱动。
②获得连接
两种方式:
<1>直接获得Connection,每次要执行SQL语句时创建一个Connection,得到结果后,关闭Connection。
语句:dbUrl=”jdbc:mysql://localhost:3306/数据库名”;(可简写jdbc:mysql:///数据库名)
dbUser=”数据库管理账号”;
dbPwd=”密码”;
Connection con= DriverManager.getConnection(dbUrl,dbUser,dbPwd);
<2>连接池
连接池中维护了一定数量的Connection,可以从连接池中获得Connection,用 完后放回连接池,可以节省系统资源。
有两种连接池的工具(c3p0和dbcp),区别是c3p0有回收空闲连接的功能
c3p0用法:
配置c3p0的配置文件(xml和properties两种)
放在src目录下自动会加载名称为:c3p0-config.xml
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///day18</property>
<property name="user">root</property>
<property name="password">abc</property>
</default-config>
</c3p0-config>
获得Connection
ComboPooledDataBase database = new ComboPooledDataBase();
Connection con = database.getConnection();
Con.close();此时不是在物理上关闭连接,而已释放连接,将连接放回连接池。
③在Service层开启事务
Con.setAutoCommit(false);
④持久化对象
PreparedStatement pst = con.preparedStatement(“sql语句 ??”);//?代表参数
pst.set数据类型(“****”,“****”) //第一个*号代表参数位置,从1开始,第二个是参数
pst.execute();
⑤查询对象
PreparedStatement pst = con.preparedStatement(“sql语句 ??”);//?代表参数
pst.set数据类型(“****”,“****”) //第一个*号代表参数位置,从1开始,第二个*是参数
ResultSet resultset = pst.executeQuery();
While(resultset.hasNext()){
resultset.get数据类型;
}
⑥提交事务
con.commit();
⑦关闭资源
con.close();