JDBC

概念:

JDBC 就是使用Java语言操作关系型数据库的一套API 全称:( Java DataBase Connectivity ) Java 数据库连接。

JDBC的本质:

  • 官方(sun公司)定义的一套操作所有关系型数据库的规则,即 接口
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包
  • 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动 jar包中的实现类  

Java操作数据库的流程:

编写代码的步骤:

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

        //2.获取连接
        String url= "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
        String username= "root";
        String password= "Yuan1001*";
        Connection conn = DriverManager.getConnection(url, username, password);

        //3.定义sql语句
        String sql="update account set money=2000 where id=1";

        //4.获取执行sql的对象Statement
        Statement state = conn.createStatement();

        //5.执行sql
        int count = state.executeUpdate(sql);//受影响的行数

        //6.处理结果
        System.out.println(count);

        //7.释放资源
        state.close();
        conn.close();

三、JDBC API详解 

3.1DriverManager 

url 连接路径:

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

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

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

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

user:用户名

password:密码

3.2Connection

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

1.获取执行SQL的 对象

2.管理事物

3.2.1获取执行SQL的 对象

普通执行SQL对象:

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

执行存储过程的对象:

3.2.2事务管理

  • MySQL事务管理:

  • JDBC事物管理:

//1. 注册驱动
       //Class.forName("com.mysql.jdbc.Driver");
       //2. 获取连接:如果连接的是本机mysql并且端口是默认
的 3306 可以简化书写
       String url = "jdbc:mysql:///db1?
useSSL=false";
       String username = "root";
       String password = "1234";
       Connection conn = 
DriverManager.getConnection(url, username, 
password);
       //3. 定义sql       String sql1 = "update account set money = 
3000 where id = 1";
       String sql2 = "update account set money = 
3000 where id = 2";
       //4. 获取执行sql的对象 Statement
       Statement stmt = conn.createStatement();
       try {
           // ============开启事务==========
           conn.setAutoCommit(false);
           //5. 执行sql
            int count1 = stmt.executeUpdate(sql1);//
受影响的行数
           //6. 处理结果
           System.out.println(count1);
            int i = 3/0;
           //5. 执行sql
            int count2 = stmt.executeUpdate(sql2);//
受影响的行数
           //6. 处理结果
           System.out.println(count2);
           // ============提交事务==========
           //程序运行到此处,说明没有出现任何问题,则需求提
交事务
           conn.commit();
       } catch (Exception e) {
           // ============回滚事务==========
           //程序在出现异常时会执行到这个地方,此时就需要回
滚事务
           conn.rollback();
           e.printStackTrace();
       }
       //7. 释放资源
       stmt.close();
       conn.close();
}
}

3.3Statement 

Statement对象的作用就是用来执行SQL语句

3.3.1 执行SQL语句

 

3.3.2代码实现 

DML语句
/**
  * 执行DML语句
  * @throws Exception
  */
@Test
public void testDML() throws  Exception {
    //1. 注册驱动
    //Class.forName("com.mysql.jdbc.Driver");
    //2. 获取连接:如果连接的是本机mysql并且端口是默认的 
3306 可以简化书写
    String url = "jdbc:mysql:///db1?
useSSL=false";
    String username = "root";执行DDL语句
    String password = "1234";
    Connection conn = 
DriverManager.getConnection(url, username, 
password);
    //3. 定义sql
    String sql = "update account set money = 3000 
where id = 1";
    //4. 获取执行sql的对象 Statement
    Statement stmt = conn.createStatement();
    //5. 执行sql
    int count = stmt.executeUpdate(sql);//执行完
DML语句,受影响的行数
    //6. 处理结果
    //System.out.println(count);
    if(count > 0){
        System.out.println("修改成功~");
   }else{
        System.out.println("修改失败~");
   }
    //7. 释放资源
    stmt.close();
    conn.close();
}

 3.4ResultSet

ResultSet(结果集对象)的作用:

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

获取查询结果

数据库连接池

 简介:

  • 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
  • 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
  • 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
  • 好处:
  1.              资源重用
  2.              提升系统响应速度
  3.              避免数据库连接遗漏

数据库连接池实现:

标准接口:DataSource

官方(SUN) 提供的数据库连接池标准接口,由第三方组织实现此接口。
功能:获取连接
  • 常见的数据库连接池:

           DBCP

           C3P0

          Druid

  • Druid(德鲁伊)

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

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

Druid的使用步骤:

1.导入jar包 druid_1.1.12.jar

2.定义配置文件

3.加载配置文件

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

5.获取连接

  public static void main(String[] args) throws Exception {
        //1.导入jar包
        //2.定义配置文件

        //3. 加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
        //4. 获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);

        //5. 获取数据库连接 Connection
        Connection connection = dataSource.getConnection();

        System.out.println(connection);


        //System.out.println(System.getProperty("user.dir"));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值