前提:
try {
Context context=new InitialContext();
ds=(DataSource)context.
lookup("java:/comp/env/jdbc/mysqlds");
} catch (Exception e) {
System.out.println("--ConnMySql 执行static获取数据源时数据块出错");
}第一种原始方式 代码连接数据库 ps=conn.prepareStatement(sql);
ps.setInt(1,Integer.parseInt(categoryId));
ps.setString(2, title);
ps.setString(3, content);
result=ps.executeUpdate();
第二种方法连接数据库,使用不带参数的QueryRunner构造方法来构造QueryRunner,在调用update或query方法时,再将需要操作的connection对象作为参数传递进去,DBUtils工具类在调用这种带connection参数的方法时,只会关闭preparedstatement和resultset对象,不会关闭conneciton对象,就是为了其他方法来调用这个conneciton。所以这种连接数据库的方法适合操作事务。
Connection conn=ds.getConnection();
QueryRunner qr = new QueryRunner();
String sql="insert into blog(category_id,title,content,created_time) values(?,?,?,now())";
String params[]={categoryId,title,content};
qr.update(conn, sql,params);
conn.close();
第三种方法连接数据库,和第二种正好相反,调用带参数的QueryRunner构造方法来构造QueryRunner,将datasource传递进去,这样update或query方法内部就调用this.getconnection方法来从这个数据源获得连接,操作完后,就关闭conneciton,preparedstatement和resultset对象.
QueryRunner qr = new QueryRunner(ds);
String sql="insert into blog(category_id,title,content,created_time) values(?,?,?,now())";
String params[]={categoryId,title,content};
qr.update( sql,params);