jdbc
使用java操作数据库
ps:MySQL5之后,可以不用进行驱动注册,因为会自动加载META-INF/services/java.sql.Driver文件中的驱动类
jdbc相关的API
1.DriverMannger
作用:①注册驱动 ②获取数据库连接
其中url要这样写
2.Connection(数据库连接对象)
作用:①获取执行sql的对象 ②管理事务
3.Statement
作用:执行sql语句
4.PreparedStatement
作用:预编译sql语句并执行:防止sql注入
ps:SQL注入(SQL Injection)是一种常见的Web安全漏洞,主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱库、被删除、甚至整个服务器权限陷)。即:注入产生的原因是后台服务器接收相关参数未经过滤直接带入数据库查询
举个sql注入的例子
所以可以看到,这样的话,sql语句的含义就完全变了,不用密码就可以访问数据库
我们用PreparedStatement解决
这个时候用connection获取预编译statement的对象而不是statement,并且用占位符?来代表参数就避免了由于字符串拼接而造成的sql注入
原理是什么?
数据库连接池
所有的数据库连接池都要实现标准接口-----DataSource,用这个接口来获取数据库的连接
常见的数据库连接池有DBCP,C3P0,Druid,目前java最好用的数据库连接池之一是阿里巴巴的德鲁伊(Druid)池,性能远超DBCP和C3P0
德鲁伊池的用法
JDBC增删改查通用步骤