1,DriverManager:驱动管理对象
功能:注册驱动,获取数据库连接。
代码:Class.forName(“com.mysql.cj.jdbc.Driver”);
注意:mysql5之后的驱动jar包可以省略注册驱动的步骤。
方法:DriverManager.getConnection(string url,string user,string password) 返回一Connection对象
参数:
url:指定连接的路径
语法:jdbc:mysql://ip地址(域名): 端口号/数据库名称?serverTimezone=UTC
例子:jdbc:mysql://localhost:3306/db3
细节:如果连接的是本机的Mysql服务器,并且Mysql服务器端口为3306则URL可以写为jdbc:mysql:///数据库名称
user:用户名
password:密码
2,Connection:数据库连接对象
功能:
获取执行sql的对象:
Statement createStatement()
PreparedStatement prepareStatement(String sql)
管理事务
开启事务:void setAutoCommit(boolean autoCommit) :调用该方法设置参数为false,即开启事务
提交事务:commit()
回滚事务:rollback()
3,Statement:执行sql对象
执行SQL:
1,boolean execute(String sql):可以执行任意的SQL
2,int executeUpdate(String sql):可以执行DML语句增删改,DDL语句表和库
返回值为影响的行数,可以通过影响的行数来判断是否执行成功
3,ResultSet executeQuery(String sql)执行DQL语句,查询语句,返回ResultSet 对象。
4,ResultSet:结果集对象
功能:封装查询结果
boolean next():游标向下移动,判断是否有数据,如果有数据返回true。
getxxx(参数):获取数据
xxx:代表数据类型 如:getint() getstring()
参数:
int:代表列的编号,1开始。
String:代表列名称。
目的:简化书写
分析:
1,注册驱动
2,抽取方法
配置文件
jdbc.properties
url=
user=
password=
3,抽取释放资源
5,PreparedStatement:执行sql对象
SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题
解决SQL注入问题:使用prepareStatement对象来解决
预编译SQL:参数使用?占位符
String sql="SELECT * FROM user WHERE username= ? and password= ?;";
返回值为PreparedStatement,使用prepareStatement();
setxxx(参数1,参数2):xxx为类型,参数1为位置,参数2为内容。
1.execute() 可以执行所有SQL语句
返回的结果boolean,boolean表示是否有结果集返回(除 select外为false),有为true,其他情况都为false
2.executeUpdate() 可以执行增删改功能
返回的结果int,int表是对数据库影响的行计数
3.executeQuery() 查询语句
返回的结果resultSet,一般情况存放的是select查询的结果集
JDBC控制事务
1,事务:一个包含多个步骤的业务操作。如果这个业务操作被事务管理,则这多个步骤要么同时失败,要么同时成功。
2,操作:开启事务,提交事务,回滚事务/
3,使用Connection对象来管理事务
开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务。
在执行sql前开启事务
提交事务:commit()
当使用sql都执行完提交事务
回滚事务:rollback()
在catch中回滚事务。