jdbc知识

jdbc

理解JDBC原理

  1. JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力

掌握Connection接口的使用

掌握Statement接口的使用

掌握ResultSet接口的使用

掌握PreparedStatement接口的使用

JDBC API

内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:

DriverManager类

connection接口

statement接口

ResultSet接口

DriverManager

1.注册驱动

Class.forName("com.mysql.jdbc.Driver);·

查看Driver类源码

static {

   try {

      DriverHanager.registerDriver(new Driver();

}catch (sQLException var1) }

    throw new RuntimeException("can't register driver!");

}

}

提示:

. MySQL 5之后的驱动包,可以省略注册驱动的步骤

·自动加载jar包中META-INF/services/java.sql.Driver文件中的驱动类

2.获取数据库连接

static connection getconnection (String url,String user,String password)

参数:

1.url:连接路径

语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2...

示例: jdbc:mysql:W/127.0.0.1:3306/db1

细节:

·如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则ur可以简写为: jdbc:mysql!川数据库名称?参数键值对·

配置useSSL=false参数。禁用安全连接方式,解决警告提示

2. user:用户名

3. password:密码

Connection

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

1.获取执行SQL的对象

普通执行SQL对象

Statement createStatement()

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

PreparedStatement prepareStatement (sql)

执行存储过程的对象

CallableStatement prepareCall (sql)

2.管理事务

  1. MySQL事务管理

开启事务:BEGIN; /START TRANSACTION;

提交事务:COMMIT;

回滚事务:ROLLBACK;

MySQL默认自动提交事务

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

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

提交事务:commit()

回滚事务:rollback()

Statement

1.执行SQL语句

执行SQL语句

int executeUpdate(sql):执行DML、DDL语句

返回值:(1)DML语句影响的行数(2)DDL语句执行后,执行成功也可能返回0

ResultSet executeQuery(sql):执行DQL语句

返回值: ResultSet结果集对象

ResultSet

ResultSet(结果集对象)作用:

1.封装了DQL查询语句的结果

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

获取查询结果

boolean next():(1)将光标从当前位置向前移动一行(2)判断当前行是否为有效行

返回值:

-true:有效行,当前行有数据

- false:无效行,当前行没有数据

xxxgetXxx(参数):获取数据

xXx:数据类型;如:int getlnt(参数) ;String getString(参数)

参数:

-int:列的编号,从1开始. String:列的名称

使用步骤:

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

2.获取数据: getXxx(参数)

l循环判断游标是否是最后一行末尾

while(本.next()){

 //获取数据

rs.getXxx(参数);}

PreparedStatement

PreparedStatement作用:

1.预编译SQL语句并执行:预防SQL注入问题

SQL注入

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

2.预编译SQL并执行SQL语句

(1)获取 PreparedStatement对象

SQL语句中的参数值,使用?占位符替代

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(:/ executeQueryo::不需要再传递sql

PreparedStatement原理

PreparedStatement 好处:

1.预编译SQL,性能更高

2.防止SQL注入:将敏感字符进行转义

(1)PreparedStatement预编译功能开启: useServerPrepStmts=true

(2) 配置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模板一样,则只需要进行一次检查、编译

数据库连接池

数据库连接池简介

·数据库连接池是个容器,负责分配、管理数据库连接(Connection)

·它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;

·释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。

好处:

资源重用

·提升系统响应速度·

避免数据库连接遗漏                

·标准接口:DataSource

·官方(SUN)提供的数据库连接池标准接口,由第三方组织实现此接口。·

功能:获取连接

Connection getConnection()

常见的数据库连接池:

DBCP

C3PO

Druid

Driud使用步骤

  1. 导入jar包druid-1.1.12.jar

2.定义配置文件

3.加载配置文件

4.获取数据库连接池对象

5.获取连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是秀秀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值