JDBC基础

本文介绍了JDBC的基础知识,包括JDBC的概念、好处和快速入门步骤。详细讲解了JDBC API中的DriverManager、Connection、Statement和ResultSet。还探讨了数据库连接池的重要性,特别是Druid数据库连接池的使用步骤和优势。
摘要由CSDN通过智能技术生成

jdbc简介

jdbc概念:

  • jdbc是使用java语言来操作关系型数据库的一套api
  • 全称:(Java DataBase Connectivity)Java数据库连接
    jdbc的本质
  • 官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包
  • 我们可以使用这套接口(jdbc)编程,真正执行的代码时驱动jar包中的实现类
    jdbc的好处
  • 各个数据库厂商使用相同的接口,java代码不需要针对数据库分别开发
  • 可随时替换底层数据库,访问数据库java代码基本不变
    在这里插入图片描述

jdbc快速入门

步骤:(8)
0、创建工程,导入驱动jar包
在这里插入图片描述1、注册驱动
Class.forName(“com.mysql.jdbc.Driver”);
2、获取连接
Connection conn= DriverManager.getConnection(url,username,password);
3、定义SQL
String sql = “updata…”
4、获取执行的sql对象
Statement stmt = conn.createStatement();
5、执行SQL
stmt.executeUpdate(sql);
6、处理返回结果
7、释放资源
.close();
在这里插入图片描述

jdbc API详解

DriverManager

driverManage (驱动管理类)作用:
1、注册驱动
2、获取数据库连接
在这里插入图片描述

Connection(数据库连接对象)

作用:
1、获取执行SQL对象(Statement createStatement)
在这里插入图片描述2、事务管理(用try-catch)
在这里插入图片描述

try {
                //开启事务
                conn.setAutoCommit(false);
                int row =  state.executeUpdate("update salary set money =9000 where id = 1");
                //int i = 3/0;
                System.out.println(row);
                int row1 =  state.executeUpdate("update salary set money =9000 where id = 2");
                System.out.println(row1);

                //提交事务
                conn.commit();
            } catch (Exception e) {
                //回滚事务
                conn.rollback();
                e.printStackTrace();
            }

Statement

作用:
执行sql语句
执行SQL语句

int executeUpdatae(sql):执行DML、DDL语句
返回值 int

ResulSet executeQuery(sql)执行DQL语句(查询)

 //处理结果集
            if(row >0){
                System.out.println("修改成功");
            }else{
                System.out.println("修改失败");
            }

ResultSet(结果集对象)

作用:
1、封装了DQL查询语句的结果

Result rs = stmt.executeQuery(sql) 执行sql语
句返回resultset对象

获取查询结果

boolean next()😕/判断是否有下一个元素
true:有限行
flase:无效行

获取数据

XXX getXXX(参数):获取数据
XXX是数据类型;如 int getInt()

//打印查询结果
while(rs.next()){
               int id =   rs.getInt(1);
               String name =rs.getString(2);
               int money =   rs.getInt(3);
                 System.out.println(id +"\t" + name +"\t" + money);

             }

resultSet案列

在这里插入图片描述

package org.oracle.account;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/*
1、定义实体类Account
2、查询数据并、并存放到account中
3、将Account对象放如ArrayList中
 */
public class AccountTest {
    public static void main(String[] args) {
        ResultSet rs =null;
        Statement state = null;
        Connection conn =null;
        //查询数据
        try {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //创建链接
             conn = DriverManager.getConnection("jdbc:mysql:///demo","root","123456");
            //发送sql
             state = conn.createStatement();
             rs = state.executeQuery("select * from salary");
            while (rs.next()){
                int id = rs.getInt(1);
                String name = rs.getString(2);
                int money = rs.getInt(3);
//                System.out.println(id);
//                System.out.println(name);
//                System.out.println(money);
//                System.out.println("------");

                Account ac = new Account(id,name,money);
                List<Account> list = new ArrayList<>();
                list.add(ac);
                System.out.println(list);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(rs!=null){
                    rs.close();
                }
                if(state!=null){
                    rs.close();
                }
                if(conn!=null){
                    rs.close();
                }



            } catch (SQLException e) {
                e.printStackTrace();
            }

        }


    }
}

数据库连接池

数据库连接池简介

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

Druid(德鲁伊)数据库连接池

使用步骤

  • 导入jar包druid -1.1.12.jar
  • 定义配置文件
  • 加载配置文件
  • 获取数据库连接池对象
  • 获取连接
    配置文件
    在这里插入图片描述
    基本代码(其他后面与上面相同)
    在这里插入图片描述

====================================


```java
package org.oracle.jdbc;
/*
jdbc总代码
*/
import com.mysql.jdbc.Driver;

import java.sql.*;

public class jdbcDemo {
    public static void main(String[] args) {

        select();
    }
    public  static void select(){
        //加载驱动
        Connection conn = null;
        Statement state = null;
        ResultSet rs = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
             conn = DriverManager.getConnection("jdbc:mysql:///demo","root","123456");
             System.out.println(conn);
             state = conn.createStatement();
             rs =  state.executeQuery("select * from salary");
             while(rs.next()){
               int id =   rs.getInt(1);
               String name =rs.getString(2);
               int money =   rs.getInt(3);
                 System.out.println(id +"\t" + name +"\t" + money);

             }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(rs!=null){
                    rs.close();
                }
                if(state!=null){
                    state.close();
                }
                if(conn!=null){
                    conn.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }

        }

    }
    public static  void update(){
        try {
            /*
            1、加载驱动
            2、创建连接
            3、创建通道,发送sql
            4、处理结果
            5、关闭资源
             */
            //加载驱动(创建驱动的实例)
            Driver driver = new Driver();//加载类

            /*其他电脑:"jdbc:mysql://localhost:3306(ip:端口号)/demo"
             */
            //创建链接
            Connection conn =  DriverManager.getConnection("jdbc:mysql:///demo","root","123456");
            System.out.println(conn);
            //创建通道,发送sql
            Statement state = conn.createStatement();
            //增删改用executeUpdate
            int row = state.executeUpdate("INSERT INTO salary VALUES(3,'昭昭',1000)");
            System.out.println(row);
					 conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值