JDBC(Java DataBase Connectivity)详解
一.概念:
JDBC是一种可执行SQL语句的JavaAPI,Java数据库链接,Java语言操做数据库mysql
二.本质:
JDBC是一种可用于执行SQL语句的Java API,由一些Java语言编写的类和页面组成。各个数据库厂商能够使用这套接口编程,真正执行的是驱动jar包中的实现类。web
三.步骤:
导入驱动jar包
复制jar包到项目的libs目录下
右键–>add as library
2.注册驱动
3 获取数据库链接对象connection
4.定义sql语句
5.获取执行sql语句的对象Statemen
6.执行sql,接受返回结果
7.处理结果
8.释放资源
详解各个对象
1.DriverManager:驱动管理对象
方法:static Connection getConnection()
参数:URL:指定链接路径 user:用户名 password:密码
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
例子:jdbc:mysql://localhost:3306
细节:若是链接的是本机的服务器,则可省略数据库的ip地址和端口。
2.Connection:数据库链接对象
功能:获取执行sql的对象
createStatement()
JDBC控制事务
1.事务:一个包含了多个步骤的业务操做,若是这个业务操做被事务管理,则这个步骤要么同时成功,要么同时失败。
2.操做:
(1)开启事务setAutocommit(blloean autocommit):调用该方法设置参数为false,即开启事务。
(2)提交事务commmit()
(3) 回滚事务rollback()
3.使用connection对象来管理事务sql
3.Statement:执行sql的对象
执行sql的方法(要注意其不一样的返回值类型)
(1)boolean execute(String sql):能够执行任意的sql
(2)int executeUpdate(String sql):
*返回值为影响的行数,能够经过影响行数来判断DML语句是否执行成功,返回值>0则执行成功
4.PrepareStatement:执行SQL的对象
发现SQL注入问题:在拼接SQL时,有一些SQL的特殊关键字参与字符串的拼接,会形成安全性问题
解决方法:PrepareStatement继承于prepareStatement
预编译的SQL:参数使用占位符?数据库
步骤:
1.导入驱动jar包
2.注册驱动
3.获取数据库对象Connection
4.定义SQL
5.获取执行SQL的对象
6.给?赋值
- 方法:setXxx()
- 参数一:?的位置编号,从1开始(第?个?)
- 参数二:?的内容,根据内容肯定所使用的方法类型,如若?内是int型,则采用的方法是getInt。
7.执行SQL,接收返回结果,不须要sql
8.处理结果
9,释放资源
二者关系:PreparedStatement接口继承自Statement,继承了其全部功能,另外还添加了一整套方法,用于发送设置给数据库以取代IN参数占位符。
Statement
PrepareStatement
通用查询
参数化查询
先初始化SQL语句,再提交到数据库中预处理
从零开始执行SQL
定义sql语句
包含的SQL具备一个或多个IN参数,留?做为占位符
执行SQL方法时须要传入SQL语句作参数
执行sql方法无需传参
相同点:二者均由Connection类对象建立 ,执行步骤大自相同。编程
注意:应该先编译SQL语句,再传递占位符表明的参数,顺序颠倒则报错安全
5.ResultSet:结果集对象。封装查询结果
next():游标向下移动一行
getXxx():获取数据
*Xxx:表明数据类型
*参数:如getInt()
1.int:表明列标号,从1开始
2.String:表明列名称
使用步骤:
1.游标向下移动一行
2.判断是否有数据(可t循环来判断)
3.获取数据
如上图,ResultSet经过控制循环来增删改查服务器