首页 > 其他分享 >JDBC概述

JDBC概述

时间:2024-08-27 17:03:50浏览次数:7  
标签:INSERT JDBC INTO EMPNO 概述 EMP VALUES DEPTNO

前言
1、JDBC是什么?
Java DataBase Connectivity(Java语言连接数据库)

2、JDBC的本质
是sun公司制定的一个接口。在java.sql.*包下。

为什么SUN需要制定一套JDBC接口?
因为每一个数据库的底层实现原理都不一样。Oracle数据库有自己的原理,MySQL数据库也有自己的原理,MS SqlServer数据库也有自己的原理…
每一个数据库产品都有自己独特的实现原理,如果没有这套接口就需要写多套java程序

驱动:就是一个jar包,里面包含了JDBC的实现类。

4、JDBC编程六步

image-20240827153502948

一、JDBC编程

1、创建一个mysql数据库作为测试

create database test;
use test;
DROP TABLE IF EXISTS EMP;
DROP TABLE IF EXISTS DEPT;
DROP TABLE IF EXISTS SALGRADE;

CREATE TABLE DEPT
       (DEPTNO int(2) not null ,
	DNAME VARCHAR(14) ,
	LOC VARCHAR(13),
	primary key (DEPTNO)
	);
CREATE TABLE EMP
       (EMPNO int(4)  not null ,
	ENAME VARCHAR(10),
	JOB VARCHAR(9),
	MGR INT(4),
	HIREDATE DATE  DEFAULT NULL,
	SAL DOUBLE(7,2),
	COMM DOUBLE(7,2),
	primary key (EMPNO),
	DEPTNO INT(2) 
	)
	;

CREATE TABLE SALGRADE
      ( GRADE INT,
	LOSAL INT,
	HISAL INT );

INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 
10, 'ACCOUNTING', 'NEW YORK'); 
INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 
20, 'RESEARCH', 'DALLAS'); 
INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 
30, 'SALES', 'CHICAGO'); 
INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 
40, 'OPERATIONS', 'BOSTON'); 
commit;
 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7369, 'SMITH', 'CLERK', 7902,  '1980-12-17'
, 800, NULL, 20); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7499, 'ALLEN', 'SALESMAN', 7698,  '1981-02-20'
, 1600, 300, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7521, 'WARD', 'SALESMAN', 7698,  '1981-02-22'
, 1250, 500, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7566, 'JONES', 'MANAGER', 7839,  '1981-04-02'
, 2975, NULL, 20); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7654, 'MARTIN', 'SALESMAN', 7698,  '1981-09-28'
, 1250, 1400, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7698, 'BLAKE', 'MANAGER', 7839,  '1981-05-01'
, 2850, NULL, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7782, 'CLARK', 'MANAGER', 7839,  '1981-06-09'
, 2450, NULL, 10); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7788, 'SCOTT', 'ANALYST', 7566,  '1987-04-19'
, 3000, NULL, 20); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7839, 'KING', 'PRESIDENT', NULL,  '1981-11-17'
, 5000, NULL, 10); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7844, 'TURNER', 'SALESMAN', 7698,  '1981-09-08'
, 1500, 0, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7876, 'ADAMS', 'CLERK', 7788,  '1987-05-23'
, 1100, NULL, 20); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7900, 'JAMES', 'CLERK', 7698,  '1981-12-03'
, 950, NULL, 30); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7902, 'FORD', 'ANALYST', 7566,  '1981-12-03'
, 3000, NULL, 20); 
INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7934, 'MILLER', 'CLERK', 7782,  '1982-01-23'
, 1300, NULL, 10); 
commit;
 
INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 
1, 700, 1200); 
INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 
2, 1201, 1400); 
INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 
3, 1401, 2000); 
INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 
4, 2001, 3000); 
INSERT INTO SALGRADE ( GRADE, LOSAL, HISAL ) VALUES ( 
5, 3001, 9999); 
commit;

2、JDBC中重要的接口和类

DriverManager 类中的静态方法 说明
static void registerDriver(Driver driver) 向 DriverManager 注册驱动程序
static Connection getConnection(String url, String user, String password) 建立到给定数据库 URL 的连接

Statement接口(执行sql)用于执行静态 SQL 语句并返回它所生成结果的对象:

statement中的方法 说明
int executeUpdate(String sql) 执行更新语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,返回值是“影响数据库中的记录条数”
ResultSet executeQuery(String sql) 执行 SQL查询语句,该语句返回单个 ResultSet 对象

ResultSet接口(查询结果集),sql查询语句后可以将结果封装到ResultSet中:

ResultSet中的方法 说明
boolean next() 将光标从当前位置向前移一行。ResultSet 光标最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推(用来查询结果)
String getString(int columnIndex) 不管数据库中的数据类型是什么,都以String的形式取出(columnIndex是指取列数,第一列,第二列…)
String getString(String columnLabel) 不管数据库中的数据类型是什么,都以String的形式取出( columnLabel指查询语句中的列名)

3、反射机制注册驱动(最常用的注册驱动方法)

加载和注册数据库驱动,数据库驱动由 mysql 厂商 "com.mysql.jdbc.Driver"提供

public static void main(String[] args) {
        try {
            //1、注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、获取连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false","root","root");
            System.out.println(conn);
            
        } catch (SQLException e) {
           e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

import java.sql.*;

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

        Connection conn = null;
        Statement stmt = null;
        try {
            //1、注册驱动的第二种方法,告诉java我要连接mysql
            Driver driver = new com.mysql.jdbc.Driver();
            DriverManager.registerDriver(driver);
            //2、获取连接,告诉java我要连接哪台机器的mysql,并写入用户和密码
            //127.0.0.1和localhost都是本地ip地址
            String url = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false";
            String user = "root";
            String password = "root";
            conn = DriverManager.getConnection(url,user,password);
            System.out.println(conn);

            //3、获取数据库操作对象(statement专门执行sql语句)
            stmt = conn.createStatement();

            //4、执行sql
            String sql = "insert into dept(deptno,dname,loc) values(50,'军部','长安');";
            //专门执行DML语句(insert、delete、update)
            //返回值是“影响数据库中的记录条数”
            int a = stmt.executeUpdate(sql);
            System.out.println(a);
            System.out.println(a == 1 ? "保存成功":"保存失败");

            //5、处理查询结果集
			//插入语句,暂时不需要查询

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //6、释放资源
            //为了保证资源一定释放,在finally语句块中关闭资源
            //分别要遵循从小到大依次关闭
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
    }
}

标签:INSERT,JDBC,INTO,EMPNO,概述,EMP,VALUES,DEPTNO
From: https://www.cnblogs.com/ZWJ7671277/p/18383139

相关文章

  • 计算机网络笔记分享(第一章 概述)
    计算机网络的定义:若干节点(结点)和连接这些节点(结点)的链路构成网络一些互相连接的自治的计算机的集合通用的、可编程的硬件互连而成网络的功能:连通性、共享(信息、硬件、软件)三个概念:网络:许多计算机连接在一起;互连网:许多网络通过路由器连接在一起;互联网(因特网):全球最大的......
  • QT概述---详细
    目录一、QT简介二、QT核心特性  1.跨平台性  2.组件化  3.信号与槽机制  4.元对象系统(MOC)  5.国际化支持三、QT模块组成四、QT应用领域  1.桌面应用程序  2.嵌入式领域  3.移动开发  4.Web开发五、总结        本文将为大......
  • 为什么sql server存储过程在ssms中执行很快,但是在jdbc调用时却又很慢?
    近几年老是不定期地遇到同一个问题,sqlserver的存储过程在ssms里执行很快,但是用jdbc调用就很慢。今天仔细地研究了一下,发现问题的关键在于存储过程的执行计划。存储过程在创建完之后,通常会被程序员用一组参数调用这个存储过程,查看能否执行。然而恰恰就是在这第一次在ssms里的......
  • 【12.1 python中的异常概述】
    概述python中的异常Python中的异常(Exception)是一种在程序执行期间发生,且会扰乱程序正常流程的事件。异常是Python用来响应错误和异常情况的一种机制,它允许程序在遇到错误时优雅地处理它们,而不是突然崩溃并停止执行。异常处理对于开发健壮、可靠和用户友好的应用程序至关重......
  • 【Spring Boot】整合JDBC
    SpringData简介1.对于数据访问层,无论是SQL(关系型数据库)还是NOSQL(非关系型数据库),SpringBoot底层都是采用SpringData的方式进行统一处理。2.SpringBoot底层都是采用SpringData的方式进行统一处理各种数据库,SpringData也是Spring中与SpringBoot、SpringClo......
  • 驱动开发系列11 - Linux Graphics 图形栈概述(二)
    目录一:GPU和硬件        现代GPU功能概览:    硬件结构:     屏幕驱动:        屏幕连接器:    屏幕CRT控制器:        CPU与GPU通信:        现代主机通信总线介绍:    通信方法:       ......
  • FPGA基础:格雷码及FIFO应用概述
    1简介反射二进制码反射二进制码(RBC),也称为反射二进制(RB)或格雷码(Graycode),得名于FrankGray,是二进制数制的一种排列方式,使得连续两个值之间仅有一个比特(二进制位)不同。格雷码在数字电路中的应用有助于减少误差、提高系统的可靠性,并简化逻辑操作,因此被广泛应用于各种数字系统和电子......
  • 芯片开发概述
                               ......
  • 大数据技术之 Flume概述、安装(1)
    目录Flume概述 Flume定义为什么选用Flume Flume基础架构 AgentSourceSink Channel EventFlume安装 Flume安装部署 安装地址 安装部署Flume概述 Flume定义Flume是Cloudera提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传......
  • CMake构建学习笔记1-概述
    CMake可以说已经是C/C++构建的事实标准了,目前绝大多数的C/C++项目都已经采用CMake进行构建,好处至少有两点:一个是跨平台,另一个是方便依赖库引入。不过笔者认为,像CMake这种工具其实也没必要特意学习,说到底它也不过是方便程序员使用的工具,没有它程序员也能进行C/C++程序的构建,只不过......