JDBC——连接MySQL数据库


前言

JDBC是SUN公司制定的一套接口(interface)


一、JDBC概述

1、JDBC是什么?

Java DataBase Connectivity(Java语言连接数据库)

2、JDBC的本质是什么?

JDBC是SUN公司制定的一套接口(interface)
java.sql.*; (这个软件包下有很多接口。)

3、为什么要面向接口编程?

解耦合:降低程序的耦合度,提高程序的扩展力。

4、为什么SUN制定一套JDBC接口呢?

	因为每一个数据库的底层实现原理都不一样。
	Oracle数据库有自己的原理。
	MySQL数据库也有自己的原理。
	MS SqlServer数据库也有自己的原理。
	....
	每一个数据库产品都有自己独特的实现原理。

在这里插入图片描述

5、JDBC开发前的准备工作

先从官网下载对应的驱动jar包,然后将其配置到环境变量classpath当中。

配置是针对于文本编辑器的方式开发,使用IDEA工具的时候,不需要配置以上的环境变量。IDEA有自己的配置方式。


二、JDBC编程六步

第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)

第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道。)

第三步:获取数据库操作对象(专门执行sql语句的对象)

第四步:执行SQL语句(DQL DML....)

第五步:处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集。)

第六步:释放资源(使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)

三、编程具体实现

1、注册驱动

static void registerDriver(Driver driver)

向 DriverManager 注册给定驱动程序。

/*1.注册驱动*/
Driver d = new Driver();
DriverManager.registerDriver(d);

2、获取连接

static Connection getConnection(String url, String user, String password)

与给定数据库建立连接

/*2.获取连接*/
String url = "jdbc:mysql://localhost :3306/bjpowernode";
String user = "root";
String password = "52741";
Connection conn = DriverManager.getConnection(url,user,password);
  • Url:统一资源定位符(网络中某个资源的绝对路径)
    URL包括:协议、IP、端口号、资源名

  • jdbc:mysql://localhost:3306/bjpowernode
    jdbc:mysql:// 协议
    Localhost 本机IP地址
    3306 MySQL数据库的端口号
    bjpowernode 具体的数据库实例名

  • 什么是通信协议?

    通信协议是通信之前就提前定好的数据传送格式。数据包具体怎么传送数据,格式提前定好的。

3、获取数据库操作对象

Statement createStatement()
创建一个 Statement 对象来将 SQL 语句发送到数据库。

/*获取数据库操作对象*/
Statement statement = conn.createStatement();

4、执行sql

  • int executeUpdate(String sql) (DML语句,insert增,delete删,update改)

  • 执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。

/*执行插入语句*/
String sql1 = "insert into dept(deptno,dname,loc) values (50,'人事部','北京')";
int i = statement.executeUpdate(sql1);
System.out.println(i == 1? "插入成功" : "插入失败");

/*执行修改语句*/
String sql1 = "update dept set dname = '销售部',LOC = '天津' where deptno = 40";
int i = statement.executeUpdate(sql1);
System.out.println(i == 1? "修改成功" : "修改失败");

/*执行删除语句*/
String sql1 = "delete from dept where deptno = 50";
int i = statement.executeUpdate(sql1);
System.out.println(i == 1? "删除成功" : "删除失败");

ResultSet executeQuery(String sql) (DQL语句,查询select)

执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。

/*执行查询语句*/
String sql = "select empno,ename,sal from emp";
resultSet= statement.executeQuery(sql);

5、处理查询结果集

boolean next() 将光标从当前位置向前移一行。
String getString(int columnIndex) 以String类型返回查询到的值

可以直接运算:
String getInt(int columnIndex) 以int类型返回查询到的值
String getDouble(int columnIndex) 以double类型返回查询到的值

参数如果是字段名的话,需要输入字段重命名后的名称
例如:select empno,ename as name ,sal from emp
传入的参数应该是resultSet.getString(“name”);而不应该是resultSet.getString(“ename”);

在这里插入图片描述

while (resultSet.next()) {
    String empno = resultSet.getString("empno");
    String ename = resultSet.getString("ename");
    String sal = resultSet.getString("sal");
    System.out.println(empno + " , " + ename +" , " + sal);
}

6、释放资源

为了保证资源一定释放,在finally语句块中关闭资源。

并且要遵循从小到大关闭,分别扑捉异常。

if (statement != null) {
    try {
        /*释放资源*/
        statement.close();
    } catch (SQLException throwables) {
        throwables.printStackTrace();
    }
}
if (conn != null ) {
    try {
        /*释放资源*/
        conn.close();
    } catch (SQLException throwables) {
        throwables.printStackTrace();
    }
}

7、完整流程

Connection connection = null;
Statement statement = null;
try {

    /*读取属性文件*/
    ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
    
    /*注册驱动*/
    Class.forName(bundle.getString("driver"));

    /*建立连接*/
    String url = bundle.getString("url");
    String user = bundle.getString("user");
    String password = bundle.getString("password");
    connection = DriverManager.getConnection(url,user,password);

    /*获取数据库操作对象*/
    statement = connection.createStatement();

    /*执行sql*/
    String sql = "";
    int i = statement.executeUpdate(sql);
    System.out.println(i == 1 ? "操作成功" : "操作失败");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值