我的Java学习笔记(六)——连接数据库
1. JDBC:Java DataBase
DBC:jdk提供的接口规范,实现代码统一
连接步骤:
1.导包 MySQL/ojdbc
2.加载驱动/类 Class.froName(“类名”);
3.获得连接对象
4.获得执行SQL语句的Statement对象
5.执行SQL语句,如果有ResultSet,处理结果集
6.关闭连接
事务操作:
setAutoCommit(true/false)
commit()
rollback()
sql注入:
a’ or ‘b’ = 'b —> 恒成立 =>sql注入
解决sql注入:PreparedStatement 预编译的
将不完整的sql语句进行编译(确定sql语句的语法结构)
Statement:每次执行都会有新的sql语句编译+执行
PreparedStatement:结构一样的sql语句,多次执行,预编译只有一次,每次只需要传参,执行
建议使用PreparedStatement
MySql分区显示:
cmd命令:
mysql -hlocalhost -uroot -p123456 ——连接mysql
show database; ——展示分区,库
use test; ——进入test分区
create database testdt; ——创建库
show tables; ——查看库中的表
总结JDBC链接步骤:
1.加载驱动/类
oracle:oracle.jdbc.driver.OracleDriver
mysql :com.mysql.jdbc.Driver
2.获得连接 Connection
DriverManager.getConnection(url,user,password);
oracle:jdbc:oracle:thin:@ip:port:sid
mysql :jdbc:mysql://ip:port/database
3.PreparedStatement
con.prepareStatement
4.设置参数
5.执行SQL:execute() executeUpdate() executeQuery()
6.得到结果集:ResultSet next()
7.使用next()遍历结果集
8.rs stmt conn 关闭连接
2.MVC模型
MVC:
M:Moudule——模型 对象(数据)
V:View——显示/界面 前端
C:Controller——控制器 连接
3.连接池
连接池的定义:已经创建好连接,获得连接时,直接将连接池中随机返回一个连接;
产生原因:连接:客户端 -> 服务器(数据库服务),物理连接,非常消耗资源。连续频繁的开启和关闭,资源浪费;
DataSource——数据源:
Apache-DBCP连接池 Pool BasicDataSource
C3P0 ComboPooledDataSource
连接池 DBCPUtils
使用方法:
C3P0
1.导包 c3p0-0.9.5.2.jar
mchange-commons-java-0.2.11.jar
2.实现类 康宝 ComboPooledDataSource
3.c3p0-config.xml 必须直接放在src下面
DBCP连接池——简化CURD操作
DBCP也是一个开源的连接池,是Apache Common成员之一,在企业开发中也比较常见,tomcat内置的连接池。
- 导包: commons-dbcp2-2.1.1.jar;commons-pool2-2.4.2.jar;
- 配置文件:
- 配置文件位置:任意,建议src(classpath/类路径)
- 配置文件内容:properties不能编写中文,不支持在STS中修改,必须使用记事本修改内容,否则中文注释就乱码了;
- 编写工具类:DataSource dataSource = BasicDataSourceFactory.createDataSource(props);