Java学习笔记_JDBC

什么是JDBC: Java Data Base Connectivity(Java数据库连接)JDBC是Java访问数据库的标准库

JDBC的作用: JDBC是用于执行SQL语句的JAVA API(Java语言通过JDBC可以操作数据库)

JDBC会用到的包:

    1.java.sql: JDBC访问数据库的基础包

    2.javaX.sql: JDBC访问数据库的扩展包

    3.数据库的驱动, 各大数据库厂商实现. 如MySQL的驱动: com.mysql.jdbc.Driver

JDBC四个核心对象, 这几个类都在java.sql包中

    1.DriverManager: 用于注册驱动

    2.Connection: 表示与数据库创建的连接

    3.Statement: 执行SQL语句的对象

    4.ResultSet: 结果集或一张虚拟表

JDBC获取连接步骤1.导入驱动jar包 2.注册驱动 3.获取连接

注册驱动

    API  java.sql.DriverManager

    static void registerDriver(Driver Driver)

    存在两个问题  1.硬编码 2.驱动被注册了两次

    推荐使用Class.forName("com.mysql.jdbc.Driver"); 加载驱动

获取连接

    API static  Connection getConnection(String url, String user, String password)

    连接数据库的URL地址格式:   协议名:子协议://服务器名称或IP地址:端口号/数据库名?参数=参数值

    MySQL写法: jdbc:mysql://localhost:3306/db?characterEncoding=utf8

    使用步骤 DriverManager. getConnection(url, user, password)

 

JDBC实现对数据的增、删、改、查

    1.实现增、删、改

        statement对象API

  • boolean execute(String sql):可以执行任意sql语句返回boolean值,表示是否返回ResultSet结果集. 仅当执行select语句,且有返回值时返回true

  • int executeUpdate(String sql):根据执行的DML语句返回受影响的行数

  • ResultSet executQuery(String sql)根据查询语句返回结果集,只能执行select语句

    2.实现对数据库的查询

    ResultSet的原理:ResultSet内部有一个指针,刚开始记录开始位置, 调用next方法, ResultSet内部指针会移动到下一行数据, 通过ResultSet得到一行数据getXXX得到某列数据

 

JDBC事务

API介绍

Connection接口中与事物有关的方法

1.void setAutoCommit(boolean autoCommint) throws SQLException

2.void commit() throws SQLExceptiont提交事务

3.void rollback() throws SQLException

 

PreparedStateme

执行原理: 先将SQL语句发送给数据库预编译, preparedStatement会引用着预编译后的结果,可以多次传入不同的参数给preparedStatement对象执行,相当于调用方法多次传入不同参数,减少sql语句编译次数,提高执行效率.并且安全性更高, 没有sql注入的隐患

API介绍

  • java.sql.Connection有获取PreparedStatement对象的方法

PreparedStatement prepareStatement(String sql)

  • java.sql.PreparedStatement中有设置SQL语句参数,和执行参数化的SQL语句方法; setXXX(int parameterIndex, XXX)

 

连接池

连接池的概念:连接池是创建和管理数据库连接的缓冲池技术. 连接池就是一个容器,连接池中保存了一些数据库连接,这些连接是可以重复使用的

 

C3P0连接池:

开源连接池,Hibernate框架

必须项参数:

use 用户名

password 密码

driverClass驱动名

jdbcUrl 数据库url路径

常用的配置参数:

initialPoolSize:初始连接数

maxPoolSize最大连接数

checkoutTimeout最大等待时间

maxIdleTime最大空闲回收时间

 

C3P0基本使用

配置文件要求

1.文件名: c3p0-config.xml

2.放在源代码即src目录下

3.配置方式一:使用默认配置

4.配置方式二:使用命名配置

    

        com.mysql.jdbc.Driver

        jdbc:mysql://localhost:3306/数据库名

        用户名

        密码

        ...

    

   

        com.mysql.jdbc.Driver

        jdbc:mysql://localhost:3306/数据库名

        用户名

        密码

        ...

    

API介绍

com.mchange.v2.c3p0.ComboPooledDataSource表示c3p0的连接池对象. 常用两种创建连接池方式1.无参构造,使用默认配置,2.有参构造,使用命名配置

public ComboPooledDataSource()

public ComboPooledDataSource(String configName).

public Connection getConnection() throws SQLException

使用步骤:

1.导入jar包c3p0-0.9.1.2.jar

2.编写c3p0-config.xml配置文件,配置对应参数

3.将配置文件放在src目录下

4.创建连接池对象ComboPooledDataSource

5.从连接池中获取连接对象

6.使用连接对象操作数据库

7.关闭资源

 

DRUID连接池

Druid是阿里巴巴开发的号称为监控而生的数据库连接池, 可以很好的监控DB池连接和SQL的执行情况

API介绍

com.alibaba.druid.pool.DruidDataSourcreFactory类有创建连接池的方法

public static DataSource createDataSource(Properties proterties)

DRUID连接池在创建的时候需要一个Properties对象来设置参数,配置文件名随便,建议放在src目录下方便加载

文件内容:

driverClassName=com.mysql.jdbc.Driver

url=com.mysql.jdbc.Driver

username=用户名

password=密码

initialSize=5

...

使用步骤:

1.在src目录下创建一个properties文件,并设置对应参数

2.加载properties文件的内容到Properties对象中

3.创建DRUID连接池,使用配置文件中的参数

4.从DRUID连接池中取出连接

5.执行SQL语句

6.关闭资源

 

数据库元数据

元数据:数据库,表,列的定义信息

ParameterMetaData可用于获取有关PreparedStatement对象中每个参数标记类型和属性

如何获取ParameterMetaData:通过PreparedStatement的getParameterMetaData()方法获取.

API:

int getParameterCount()获取PreparedStatement的SQL语句参数?的个数

int getParameterType(int param)获取指定参数的SQL类型

ResultSetMetaData

可用于获取有关ResultSet 对象中列的类型和属性的信息,通过resultset的getMetaData()

int get  ColumnCount返回次ResultSet对象中的列数

String getColumnName(int column)获取指定列的名称

String getColumnTypeName(int column)获取指定列的数据库特定类型名称

 

JDBCTemplate

JDBCTemplate是Spring对JDBC的封装目的是 使JDBC更加易于使用,我们只需要提供sql语句和提取结果.

执行sql语句的方法大致分三类

1.execute;可以执行所有SQL语句,一般用于执行DDL语句

2.update:用于执行insert,update,delete等DML语句

3.queryXxx:用于DQL数据查询语句

API

org.springframework.jdbc.core.JdbcTemplate

public JdbcTemplate(DataSource dataSource)创建JdbcTemplate对象,方便执行SQL语句

public void execute(final String sql)

 

jdbcTemplate实现查询

1.public int queryForInt(Stirng sql)执行查询结果返回一个int类型的值

2.public long queryForLong(String sql)

3.public  T queryForObject(Stirng sql, Class requiredType)执行查询语句,返回一个指定类型的数据

4.public Map queryForMap(Stirng sql)执行查询语句,将一条记录放到一个Map中,key是字段名,value是该字段的值

5.public List> queryForList(String sql)执行查询语句,返回一个List集合,List中存放的是Map类型的数据   

6.public  List query(String sql, RowMapper rowMapper)执行查询语句,返回一个List集合,List中存放的是RowMapper指定类型的数据

使用BeanPropertyRowMapper做映射返回对象,返回的是一个JavaBean

你可能感兴趣的:(Java学习笔记_JDBC)