Mysql(六) JDBC
2021/7/15 19:08:20
本文主要是介绍Mysql(六) JDBC,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、数据库驱动
不同数据库有不同的驱动。我们的程序会通过数据库驱动和数据库进行链接。
2.jdbc
SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个(java操作数据库的)规范,俗称JDBC。对开发人员来说,只需要掌握jdbc接口的操作即可。
3.书写第一个jdbc程序
// 1. 加载驱动,固定写法 Class.forName("com.mysql.jdbc.Driver"); // 2. 用户信息和url String userName = "root"; //用户名 String password = "123456"; //密码 String url = "jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8&useSSL=true"; //3.获取连接 Connection connection = DriverManager.getConnection(url,userName,password); //4.获得执行sql的对象 Statement statement = connection.createStatement(); //5.执行sql String sql = "select * from user"; ResultSet resultSet = statement.executeQuery(sql); while(resultSet.next()){ system.out.println("id="+resultSet.getObject("id")); } //6.释放连接 resultSet.close(); statement.close(); connection.close();
4.Statement对象详解
Jdbc中的statement对象用于向数据库发送sql语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完成后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)。
Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。
5.sql注入问题
什么是sql注入?
sql存在漏洞,会被攻击导致数据泄露。
6.PreparedStatement对象
PrepareStatement可以防止sql注入,效率更好。
PrepareStatement防止sql注入的本质就是把传递进来的参数当做字符,假设其中存在转译字符,会被直接转译。
// 1. 加载驱动,固定写法 Class.forName("com.mysql.jdbc.Driver"); // 2. 用户信息和url String userName = "root"; //用户名 String password = "123456"; //密码 String url = "jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8&useSSL=true"; //3.获取连接 Connection connection = DriverManager.getConnection(url,userName,password); //4.获得执行sql的对象 String sql = "select * from user where id = ?"; PrepareStatement statement = connection.prepareStatement(sql); //5.执行sql statement.setInt(1,1); ResultSet resultSet = statement.executeQuery(); while(resultSet.next()){ system.out.println("id="+resultSet.getObject("id")); } //6.释放连接 resultSet.close(); statement.close(); connection.close();
7. JDBC操作事务
Connection conn = null; PrepareStatement ps = null; try{ Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(); //关闭数据库自动提交,会自动开启事务 conn.setAutoCommin(false); String sql1 = "update amount set money = money - 100 where id = 1"; ps = conn.prepareStatement(sql1); ps.executeUpdate(); String sql2 = "update amount set money = money + 100 where id = 2"; ps = conn.prepareStatement(sql2); ps.executeUpdate(); //提交事务 conn.commit(); }catch(Exception e){ try{ conn.rollback(); //如果失败则回滚事务 }catch(Exception e){ e.printStackTrace(); } }finally{ try{ ps.close(); }catch(Exception e){ e.printStackTrace(); } try{ conn.close(); }catch(Exception e){ e.printStackTrace(); } }
8. 数据库连接池
池化技术:准备一些预先的资源,过来就连接预先准备好的。
最小连接数
最大连接数
等待超时
编写连接池,需要一个接口,DataSource
这篇关于Mysql(六) JDBC的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南