JDBC API详情

DriverManager

DriverManager(驱动管理类)作用:

1、注册驱动

2、获取数据库连接

Connnection

Connection(数据库连接对象)作用:

1、获取执行SQL的对象

普通执行SQL对象

Statement createStatement()

预编译SQL的执行SQL对象:防止SQL注入

PreparedStatement prepareStatement(sql)

执行存储过程的对象

CallableStatement prepareCall(sql)

2、管理事务

MySQL事务管理

开启事务:BNEGIN;/START TRANSACTION
提交事务:COMMIT;
回滚事务:ROLLBACK;
​
​
MySQL自动提交事务

JDBC事务管理:Connection接口中定义了3个对应的方法

开启事务:setAutoCommit(boolean autoCommit); true为自动提交事务,false为手动提交事务
提交事务:commit()
回滚事务:rollback()

Statement

Statement作用

执行sql语句

执行sql语句

int executeUpdate(sql):执行DML,DDL语句
    返回值:(1)DML语句影响的行数
           (2)DDL语句执行后,执行成功也可能返回0
ResultSet executeQuery(sql):执行DQL语句
    返回值:ResultSet结果集对象

ResultSet

ResultSet(结果集对象)作用:

封装DQL查询语句的结果

ResultSet stmt.executeQuery(sql):执行DQL语句,返回ResultSet对象

获取查询结果

boolean next():(1)将光标从当前位置向前移动一行
               (2)判断当前行是否为有效行
    返回值:
        true:有效行,当前行有数据
        false:无效当,当前行没有数据
xxx getXxx(参数):获取数据
    xxx:数据类型;如 int getInt(参数)
                    String getString(参数)
    参数:
        int:列的编号,从1开始
        String:列的名称

使用步骤:

游标向下移动一行,并判断改行是否有数据:next()

获取数据:getXxx(参数)

//循环判断游标是否最后一行末尾
while(rs.next()) {
    //获取数据
    rs.getXxx(参数);
}

PreparedStatement

PreparedStatement作用:

预编译SQL语句并执行,预防SQL注入问题

1、获取PreparedStatement对象

String sql = "select * from user where username = ? and password = ?";
//通过Connection对象获取,并传入对应的sql语句
PreparedStatement pstmt = conn.prepareStatement(sql);

2、设置参数值

PreparedStatement对象:setXxx(参数1, 参数2);给?赋值
    Xxx:数据类型;如setInt(参数1, 参数2)
    参数:
        参数1:?的位置编号,从1开始
        参数2:?的值

3、执行sql

executeUpdate(); /executeQuery(); :不需要再传递sql

SQL注入

SQL注入是通过操作输入来修改实现定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法

PreparedStatement原理

PreparedStatement好处:

预编译sql,性能稳定

防止sql注入:将敏感字符进行转义

PreparedStatement预编译功能开启:useServerPrepStmt=true

配置MySql执行日志(重启MySql服务后生效)

log-output=FILE
general-log=1
general_log_file="D:\mysql.log"
slow-query-log-1
slow_query_log_file="D:\mysql_slow.log"
long_query_time=2

PreparedStatement原理;

1、在获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查,编译(这些步骤很耗时)

2、执行时就不用再进行这些步骤了,速度更快

3、如果sql模板一样,则只需要进行一次检查,编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

igxia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值