JDBC
时间:2022-05-08
本文章向大家介绍JDBC,主要内容包括1.普通的 JDBC 链接、2. 数据库连接池:、3. c 组件中的数据库操作类、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
1.普通的 JDBC 链接
public class JdbcConnect {
@Test
public void connect() throws ClassNotFoundException, SQLException {
/**
* 准备四大参数: driver url username password
* 加载驱动类
* 得到连接
* 创建statement
* 调用statement的查询或者更新方法
* 关闭资源(必须关闭)倒关
*/
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/Java","root","");
Statement statement=con.createStatement();
int effectRow=statement.executeUpdate("INSERT INTO `user` VALUES (1,'lwen',20,'lwen')");
System.out.println(effectRow);
ResultSet resultSet=statement.executeQuery("SELECT * FROM `user`");
while (resultSet.next()){
System.out.println(resultSet.getInt(1)); //或者使用列名称来获取
System.out.println(resultSet.getString(2));
System.out.println(resultSet.getInt(3));
System.out.println(resultSet.getString(4));
}
//倒关
resultSet.close();
statement.close();
con.close();
}
}
2. 数据库连接池:
/**
* 数据库连接池
* 就是为了连接课重用,由于创建销毁比较麻烦,所以放在一个map里面也就是一个池,下次要用的时候直接从里面取
* 而不用平凡的销毁和创建
*
* 常用的就是dbcp连接池 这个也说commons里面的东西
*/
public class JdbcConnections {
/**
* 1.池参数
* 2.四大连接参数
* 3.实现javax.sql.DataSource接口
*/
@Test
public void dbcp() throws SQLException {
BasicDataSource dataSource=new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost/Java");
dataSource.setUsername("root");
dataSource.setPassword("");
dataSource.setMaxTotal(20);//设置最大的连接数
dataSource.setMaxWaitMillis(1000);//设置最大等待时间
Connection connection=dataSource.getConnection();//此时获得的connection不是以前的那个了而是在以前的mysql的连接上的增强
//也就是说他是装饰者模式,装饰的部分就是close方法,因为此时的close方法不是关闭连接而是将连接归还的操作
// 下面的操作就和一般的sql连接一模一样了
// 然后注意一般来说上面的哪些创建连接池的操作我们只进行一次。然后整个项目就是用这一个连接池
}
/**
* 现在dbcp用的更少了 主要用的就是c3p0
*/
@Test
public void c3p0() throws PropertyVetoException, SQLException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost/Java");
dataSource.setUser("root");
dataSource.setPassword("");
dataSource.setMaxPoolSize(20);
dataSource.setMinPoolSize(2);
dataSource.setInitialPoolSize(20);
dataSource.setAcquireIncrement(5);
Connection connection=dataSource.getConnection();
System.out.println(connection); //返回的是代理连接 而不是装饰者模式 他比装饰者模式更加的灵活
connection.close();
}
}
3. c 组件中的数据库操作类
public class JdbcDbUtils {
/**
* 测试beanHandler 对于单行的javaBean
* @throws SQLException
*/
@Test
public void fun1() throws SQLException, PropertyVetoException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
dataSource.setMaxPoolSize(20);
dataSource.setAcquireIncrement(4);
dataSource.setMinPoolSize(5);
dataSource.setInitialPoolSize(10);
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost/java");
dataSource.setUser("root");
dataSource.setPassword("");
QueryRunner qr=new QueryRunner(dataSource);
String sql="select * from user where id = ?";
Object[] params={1};
final Object query = qr.query(sql, new BeanHandler<UserBean>(UserBean.class), params);
System.out.println(query);
}
@Test
public void fun2() throws SQLException, PropertyVetoException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
dataSource.setMaxPoolSize(20);
dataSource.setAcquireIncrement(4);
dataSource.setMinPoolSize(5);
dataSource.setInitialPoolSize(10);
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost/java");
dataSource.setUser("root");
dataSource.setPassword("");
QueryRunner qr=new QueryRunner(dataSource);
String sql="select * from user";
final Object query = qr.query(sql, new BeanListHandler<UserBean>(UserBean.class));
System.out.println(query);
}
@Test
public void fun3() throws SQLException, PropertyVetoException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
dataSource.setMaxPoolSize(20);
dataSource.setAcquireIncrement(4);
dataSource.setMinPoolSize(5);
dataSource.setInitialPoolSize(10);
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost/java");
dataSource.setUser("root");
dataSource.setPassword("");
QueryRunner qr=new QueryRunner(dataSource);
String sql="select * from user where id = ?";
Object[] params={1};
final Object query = qr.query(sql, new MapHandler(), params);
System.out.println(query);
}
@Test
public void fun4() throws SQLException, PropertyVetoException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
dataSource.setMaxPoolSize(20);
dataSource.setAcquireIncrement(4);
dataSource.setMinPoolSize(5);
dataSource.setInitialPoolSize(10);
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost/java");
dataSource.setUser("root");
dataSource.setPassword("");
QueryRunner qr=new QueryRunner(dataSource);
String sql="select * from user ";
Object[] params={1};
final Object query = qr.query(sql, new MapListHandler());
System.out.println(query);
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android中Service和Activity相互通信示例代码
- Android编程实现定时发短信功能示例
- Android实现新浪微博一键分享的实例代码
- Android实现常见的验证码输入框实例代码
- Android实现加载状态视图切换效果
- Retrofit + OkHttp缓存处理的示例代码
- Android图片实现压缩处理的实例代码
- Windows10安装linux子系统的两种方式(图文详解)
- Android 图片处理避免出现oom的方法详解
- session登陆成功第四篇4
- Android编程使用pull方式解析xml格式文件的方法详解
- Android中ActionBar和ToolBar添加返回箭头的实例代码
- Android自定义双向进度条的实现代码
- android视频截屏&手机录屏实现代码
- Android自定义组件跟随自己手指主动画圆