JDBC学习总结(上)

JDBC是什么?JDBC有什么用?JDBC怎么用?

JDBC是什么?

JDBC的是Java Database Connectivity的缩写,直译过来就是Java数据库连接,连接数据库干嘛呢?当然是对数据库进行操作啦,所以,JDBC从字面上理解的意思就是,用Java语言对数据库进行CRUD。那么为什么会有这么一个玩意儿诞生呢?相信用过关系型数据库的老哥们都知道,虽然关系型数据库的语法都差不多,但是还是有细微的区别,存在方言。Java最厉害的地方在哪儿?不就是跨平台嘛,我在Windows下代码是这样,在Linux下代码也是这样,所以方言是Java不能容忍的。那么怎么办呢?实现统一呗。为此JDBC就横空出世了。

那么JDBC的本质又是什么呢?在此先上一张图在这里插入图描述
哈哈,原来JDBC就是一组接口啊,那么谁去实现接口呢?当然是这些数据库厂商大佬啊,例如Oracle(Oracle,Mysql),Mircosoft(SqlServer),IBM(DB2),所以在以后操作的时候看到接口new对象的时候不要惊慌,大佬们已经把实现写好了,这样操作是没毛病的。

在此,我重新给JDBC下个定义,它是由Sun提供的一组用于操作数据库的接口,由各大厂商去写实现

JDBC有什么用?怎么用?

其实上文已经说了有什么用,用Java操作数据库嘛,那么该怎么用呢?Talk is cheap,show me the code
啥都别说,先上代码

package com.it.leon;

import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Practice {
    @Test
    public void test01() {
        Connection con = null;
        PreparedStatement pstmt = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(
                    "jdbc:mysql://localhost/db1",
                    "root",
                    "root");
            String sql = "update test set name=? where id=?";
            pstmt = con.prepareStatement(sql);
            pstmt.setString(1,"游坦之");
            pstmt.setInt(2,1);
            pstmt.executeUpdate();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

在执行前,这是表中的记录
在这里插入图片描述
在执行后,表中的记录
在这里插入图片描述
执行成功!

关键步骤:

1.注册驱动

Class.forName("com.mysql.jdbc.Driver");

2.申请Connection资源

con = DriverManager.getConnection(
        "jdbc:mysql://localhost:3306/db1",  //你要申请哪个IP端口号下的哪个数据库
        "root",  //用户名
        "root");  //密码

3.获取statement对数据库进行操作

String sql = "update test set name=? where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1,"游坦之");
pstmt.setInt(2,1);
int i = pstmt.executeUpdate();

对数据库进行实际操作的是谁?是statement。那为什么不用statement而用prepareStatement呢?因为涉及到sql的注入问题(sql的占位符),所以用更安全的prepareStatement,executeUpdate()的返回值int是什么呢?就是该操作影响的行数,可以用来判断操作成功与否

4.获取数据库返回的资源

ResultSet rs = pstmt.executeQuery();

resultSet是数据库反馈给我们的数据,也就是我们想查询的结果。

增删改用executeUpdate,查询用executeUpdate

5.释放资源

 finally {
    if (pstmt != null) {
        try {
            pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    if (con != null) {
        try {
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

释放资源的操作一定要写在finally里,因为不管操作成功与否,都必须

以上就是JDBC的基本过程,只要搞清楚Connection,Statement,ResultSet这几个对象即可,当然,不要忘了首先要注册驱动,因为不注册,JDBC就只是个没写实现的接口而已

PS:JDBC和socket好像啊!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值