JDBC的简单介绍

JDBC

JDBC概念:

  • jdbc就是用Java语言操作数据库的一套api

  • 全称:(jdbc DataBase Connectivity)java数据库连接()

  • 为了实现同一套代码操作不同的关系型数据库,sun公司指定了一套接口jdbc,而各个数据库厂商写一个实现类去实现jdbc接口,这样Java程序员只需要一套代码就可以操作不同的关系型数据库

  • 注意是这些oracle,MySQL,db2他们还取了一个比较洋气的名字,什么MySQL驱动啊,Oracle驱动啊,就是实现类,名字高端大气而已

JDBC的本质

  • sun公司定义的一套接口,即操作所以关系型数据库的规则。

  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包(就是各个数据库厂商写好了的实现类)

  • 我们可以使用JDBD这套接口编程,真正执行代码的是驱动jar包中的实现类

JDBC的好处

  • 你各个数据库厂商使用的接口是一样的,Java代码不需要针对不同是数据库进行不同的Java代码开发

  • 可以随时替换底层的数据库,访问的Java代码不变。(就是说,你写了一个操作MySQL数据库的Java代码,你要操作Oracle数据库的时候,你不需要去改变你的Java代码,只需要将MySQL驱动换成Oracle驱动即可)

JDBC快速入门(操作数据库的求代码)

  1. 注册驱动

    Class.forName("com.mysql.jdbc.Driver");
  2. 获取连接

    Connection conn=DriverManager.getConnection(url,username,password)
  3. 定义sql语句

    String sql="你写MySQL数据库的sql语句"
  4. 获取执行sql对象(获取Statement对象)

    Statement stmt=conn.createStatement();
  5. 执行sql

    stmt.executeUptate(sql);
    • 这里要看是执行什么sql语句了,不同的sql语句调用不同的方法

  6. 处理返回结果

    • 你用Java代码去操作MySQL数据库,将sql语句发送给MySQL数据库,然后MySQL数据库返回处理结果,需要Java代码去处理

  7. 关闭资源

JDBC的API详解

  • DriverManager

  • Connection

  • ResultSet

  • PreparedStatement

DriverManager

注册驱动的细节

  • 这是注册驱动时候Driver的源码。底层是DriverManager调用了registerDriver方法,然后new一个 Driver()对象作为参数

static {
        try {
            java.sql.DriverManager.registerDriver(new Driver());
        } catch (SQLException E) {
            throw new RuntimeException("Can't register driver!");
        }
    }
  • 这是自己编写注册驱动的代码

    1. 这个是反射机制加载类,静态代码块随着类的加载而加载

    2. 在MySQL驱动jar包5后,这一行驱动代码可以省略(在这个目录下写了注册驱动,并且自动加载:mysql-connector-java-5.1.47.jar!\META-INF\services\java.sql.Driver)

//1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");

url的连接路径

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

  • 示例:jdbc:mysql://localhost:3306/db1?useSSL=false

  • 解释:后面useSSL=false是一个键值对,useSSl是键,false是值,表示禁用安全连接方式,解决警告提示

  • 细节:如果你是连接的本机,那么ip地址和端口号可以省略不写

Connection

事务管理

  • mysql的事务管理

    1. 开启事务:begin;/start transaction;

    2. 提交事务:commit

    3. 回滚事务:rollback;

    4. MySQL默认自动提交事务

  • JDBC事务管理:(Connection接口中定义了三个对应的方法)

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

    2. 提交事务:commit()

    3. 回滚事务:roolback()

  • 使用:要在执行sql语句前开启事务,处理结果之后回滚事务,出现异常后回滚事务。如果我们期望两条sql语句同时生效或者失败就要用事务管理起来,出现异常后就会执行catch里面回滚事务代码,不会提交事务(使用到处理异常的try-catch知识)

ResuSet

作用

  • 封装DQL查询结果集

    ResultSet rs=stmt.executeQuery(sql);//执行DQL语句,返回ResultSet对象
  • 讲解:首先我们看这个ResulltSet集合这个Set我们就知道是一个键值对的Set集合,将执行的sql语句查询的结果集封装到这个ResultSet里面,然后取出来。

如何将结果集取出来

  • boolean next()方法:(1):将光标从当前位置向前移动一行;(2):判断当前行是否为有效行(什么是有效行:就是这一行上面有查询结果集的数据)

    1. true:有效行,当前有数据

    2. false:无效行:当前行没有数据

  • xxx getXxx(参数):获取数据

    1. int getString(参数);String getString(参数)

    2. 参数:

      1. int:列的编号,从1开始

      2. String:列的名称

  • 总结:就是跟集合的iterate迭代器差不多

PreparedStatement

  1. 作用:防止sql注入,预编译sql并执行sql语句

三步:

  1. 获取preparedStatement的对象

    //SQL语句中的占位符使用?来代替
    String sql="select * from tb_user where username=?and password=?"
    //通过Connection对象获取,并传入对应的sql语句
    PreparedStatement pstmt=conn.prepareStatement(sql);
  2. 这个问号占位符后面会用preparedStatement对象pstmt去调用setXxx方法去设置值,假如第一个问号是String类型就是pstmt.setString(1,第一个问号要填的值)

  3. 通过这个对象执行sql,是会对sql语句进行转义处理,从而防止sql注入

数据库连接池

数据库连接池简介

  • 数据库连接池他是一个容器,负责分配和管理数据库连接

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

  • 好处:

    • 资源重用

    • 提升系统响应速度

    • 避免数据库连接遗漏

数据库连接池实现

  • 标准接口:DataSource

    • sun公司提供的数据库连接池标准接口,由第三方组织实现此接口。

    • 功能:获取连接

      Connection getConnection()
    • 常见的数据库连接池:

      • DBCP

      • C3P0

      • Druid

    • Druid(德鲁伊)

      • Druid连接池是阿里巴巴开源的数据库连接池

      • 功能强大,性能优秀,是Java语言最好的数据库连接池之一

德鲁伊连接池的操作步骤

  1. 导入德鲁伊jar包

  2. 定义配置文件

  3. 加载配置文件

Properties prop=new Properties();
prop.load(new FileInputStream("配置文件的路径"))

4.获取连接池对象

DataSource datasource=DruidDataSourceFactory.createDataSource(prop);

5.获取数据库连接Connection

Connection connection=dataSource.getConncetion();

细节:

1.获取当前根路径

System.out.println(System.getProperty("user.dir"))

2.在写实体类时候int类型数据最好用包装类型,因为全局变量int有默认值0,而包装类型Integer默认值为null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值