博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
连接池
阅读量:7090 次
发布时间:2019-06-28

本文共 2172 字,大约阅读时间需要 7 分钟。

一,JDBC的删改查操作
  删,改同添加一样
  ★,查询
    ResultSet rs=state.executeQuery(
"Select * From products;");
    while(rs.next()){
      Int pid=rs.getInt(“pid”);
      String pname=rs.getString(“pname”);
    }
 
二,PreparedStatement
  1,SQL注入攻击
    指用户根据编写程序的漏洞,使用SQL语句对数据库进行攻击,获取数据库信息
  2,解决SQL注入攻击
    方法:
      使用Statement接口的子接口--》java.sql.PreparedStatement
extends Statement
    步骤:
      1,获取PreparedStatement对象
        PreparedStatement pst=conn.prepareStatement(String sql);
        sql语句可以使用占位符 ?
      2,设置占位符 ?的数据
        pst.setObject(
1,username);
      3,执行SQL语句
        返回
int       pst.executeUpdate();   用于 insert update delete
        返回 ResultSet     pst.executeQuery();   用于 select
 
三,用连接池重写工具类
  原理:
    连接池--》一个容器--》java中的集合--》养一些链接 Connection  集合常用LinkedList ArrayList,HashSet,HashMap
  规范:
    连接池是不同厂家生产的连接数据库的一种工具,DBCP C3P0 德鲁伊
    java中出面定制了一套连接池的规范,javax.sql.DataSource 接口,定义了从连接池中获取连接的抽象方法,getConnection();
    对于使用者,我们只需要知道getConnection方法是从连接池中获取连接,而无需关注每种连接池的内部实现 ----》这就是面向接口的编程
  使用:
    0,导入jar包
    1,在成员位置,创建一个静态的ComboPooledDataSource对象
    2,在静态代码块中使用 CPDS对象.setXXX方法 设置数据库连接
    3,定义一个静态方法, CPDS对象中获取数据库连接Connection
    4,释放资源
 
public class PSUtils {
//0 导入查jar包
// * 1 在成员变量位置 创建一个静态ComboPooledDataSource对象
private static ComboPooledDataSource ds=new ComboPooledDataSource();
// * 2 在静态d代码块使用ComboPooledDataSource对象 setxxxx 方法 设置数据库连接
static {
try {
ds.setDriverClass(
"com.mysql.jdbc.Driver");
ds.setJdbcUrl(
"jdbc:mysql://127.0.0.1:3306/day05");
ds.setUser(
"root");
ds.setPassword(
"root");
}
catch (PropertyVetoException e) {
e.printStackTrace();
}
}
// * 3 定义一个静态方法ComboPooledDataSource对象中获得数据库连接Connection
public static Connection get(){
try {
return ds.getConnection();
}
catch (SQLException e) {
throw new RuntimeException("连接失败!");
}
}
// * 4 释放资源
public static void close(ResultSet rs, Statement state,Connection conn){
if (rs!=null){
try {
rs.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
if (state!=null){
try {
state.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
}

转载于:https://www.cnblogs.com/kide1412/p/11010031.html

你可能感兴趣的文章
项目整体管理
查看>>
打算搭建一个***视频下载网站
查看>>
Skype for Business Server 2015-04-前端服务器-7-部署
查看>>
我的友情链接
查看>>
django使用rest_framework API认证
查看>>
背景图片百分之百大小css设置方法
查看>>
SQL 语句中的With(index())
查看>>
我的友情链接
查看>>
修改计算机名后arcgis设置
查看>>
揭密HTML5带来的攻击手法
查看>>
php脚本超时时间设置
查看>>
DPM2012学习(十一),裸机还原域控制器
查看>>
SQL2005学习(二十五),插入单行数据
查看>>
bootstrap-fileinput提交多张图片时只获取到一张
查看>>
RedHat 正在决定 eth0 的 IP 信息...失败;无链接。检查电缆吗?
查看>>
我眼中的德国攻城师
查看>>
Linux Mail基本服务器构建之postfix源码安装(下)
查看>>
Centos6.2下puppet客户端安装
查看>>
Nginx实现高效负载均衡器
查看>>
ElastAlert对ELK日志进行邮箱报警
查看>>