JDBC(Java DataBase Connectivity)

JDBC

目录

JDBC

简介

JDBC结构步骤

API接口

DriverManager

Conection

Statement

ResultSet

PreparedStatement


简介

        JDBC是使用Java语言操作关系数据库的一套ADI。全称Java DataBase Connectivity,Java数据库连接。一套标准接口操作其他所有关系数据库。数据库接口实现驱动jar包由数据库厂商提供。

JDBC结构步骤

1、注册驱动

2、获取连接

3、定义SQL语句

4、获取执行SQL对象

5、执行SQL语句

6、返回处理结果

7、释放资源

//注册驱动
//Class.forName("com.mysql.cj.jdbc.Driver");
        
//获取连接
String url = "jdbc:mysql://127.0.0.1:3306/练习jdbc";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);

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

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

//执行sql
int count = stmt.executeUpdate(sql);//返回受影响的行数

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

//释放资源c
stmt.close();
conn.close();

API接口

DriverManager

功能:注册驱动、获取数据库连接。

注册驱动本质上是使用了DriverManager类的方法,MySQL5之后驱动的版本可以不用写注册驱动的代码,原因是它自己帮你注册好了。

获取数据库连接DriverManager.getConnection(url, username, password)

//获取连接
String url = "jdbc:mysql://127.0.0.1:3306/练习jdbc";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);

Conection

功能:获取执行对象、事务管理、

事务管理:

开启事务 setAutoCommit(boolean autocommit) true自动提交false手动提交;

提交事务 commit()

回滚事务 rollback()

String url = "jdbc:mysql://127.0.0.1:3306/练习jdbc";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);

String sql1 = "update account set money = 3000 where id = 1;";
String sql2 = "update account set money = 4000 where id = 2;";

Statement stmt = conn.createStatement();

try {
    //开启事务
    conn.setAutoCommit(false);
    //执行事务
    int count1 = stmt.executeUpdate(sql1);
    System.out.println(count1);
    int i = 3/0;//异常
    int count2 = stmt.executeUpdate(sql2);
    System.out.println(count2);
    //提交事务
    conn.commit();
} catch (Exception throwables) {
    //回滚事务
    conn.rollback();
}

stmt.close();
conn.close();

Statement

执行SQL语句

excuteUpdate(sql) 执行DML、DDL语句 返回影响的行数;需注意建表、删表、建数据库、删数据库的返回是0;

excuteQuery(sql) 执行DQL语句 返回ResultSet 一个结果集对象。

  • excuteUpdate(sql) 执行DML
String url = "jdbc:mysql://127.0.0.1:3306/练习jdbc";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);

String sql = "update account set money = 4000 where id = 1;";

Statement stmt = conn.createStatement();

int count = stmt.executeUpdate(sql);

if(count > 0){
    System.out.println("修改成功");
}else{
    System.out.println("修改失败");
}

stmt.close();
conn.close();
  •  excuteUpdate(sql) 执行DDL
String url = "jdbc:mysql://127.0.0.1:3306/练习jdbc";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);

String sql = "CREATE TABLE demo(\n" +
        "\tid int,\n" +
        "\tname VARCHAR(10)\n" +
        ");";

Statement stmt = conn.createStatement();

int count = stmt.executeUpdate(sql);

//建表删表建数据库删数据库的返回是0
System.out.println(count);

stmt.close();
conn.close();

  • excuteQuery(sql) 执行DQL语句
String url = "jdbc:mysql://127.0.0.1:3306/练习jdbc";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);

String sql = "CREATE TABLE demo(\n" +
        "\tid int,\n" +
        "\tname VARCHAR(10)\n" +
        ");";

Statement stmt = conn.createStatement();

stmt.executeQuery(sql);//返回一个ResultSet结果集

stmt.close();
conn.close();

ResultSet

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

2、ResultSet能通过next()来获取查询结果,next()判断当前行是否为有效行,true有效说明有数据,false无效说明当前行没有数据。getXXX(参数)获取参数。参数获取可通过列的编号也可通过列名,要注意列的编号是从1开始的。

String url = "jdbc:mysql://127.0.0.1:3306/练习jdbc";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);

String sql = "SELECT * FROM account;";

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);//返回一个ResultSet结果集

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("---------------------");
    System.out.println(rs.getInt("id"));
    System.out.println(rs.getString("name"));
    System.out.println(rs.getInt("money"));
    System.out.println("---------------------");
}

rs.close();
stmt.close();
conn.close();

PreparedStatement

继承自Statement,用于预防sql注入。

Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/练习jdbc", "root", "123456");
String sql = "select * from account where id = ?";
int id = 1;
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
    System.out.println("查到");
    System.out.println(rs.getInt("money"));
}
rs.close();
pstmt.close();
conn.close();

数据库连接池

一个负责分配、管理数据库连接的容器。

它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏;
好处:
资源重用;
提升系统响应速度;
避免数据库连接遗漏。

常见数据库连接池:DBCP、C3P0、Druid。

Driud使用步骤:
1.导入jar包 druid-1.1.12jar
2.定义配置文件
3.加载配置文件
4.获取数据库连接池对象
5.获取连接

Properties prop = new Properties();
prop.load(new FileInputStream("src/com/yozi/druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);

Connection conn = dataSource.getConnection();

System.out.println(conn);

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值