IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 简单上手JDBC -> 正文阅读

[大数据]简单上手JDBC

01_简介JDBC

JDBC是商标,是技术,是一个规范标准,具体是类和接口的集合。

商标:Java DateBase Connectivity,Java数据库连接

技术:通过它连接各种不同数据库,执行insert, delete, update, select, create table等DML(数据操作语言)DDL(数据定义语言)。

规范:是SUN公司制定的一套Java连接数据库规范标准,现版本4.0.

与之相似的ODBC是微软制定的应用程序连接数据库的规范标准,后升级命名为OLEDB。

02_JDBC具体类和接口

相关类和接口在java.sql包中

名称类型说明
Driver接口用来表示驱动程序类
Connection接口用于连接数据
Statement接口执行SQL语句并将数据检索到ResultSet中
ResultSet接口数据库结果集数据表,通常由执行查询数据库语句产生
PreparedStatement接口执行预编译SQL语句
DriverManager驱动程序管理器,通过它来得到连接对象

?03_使用JDBC

1_项目引用驱动jar包

在项目中新建文件夹,将从各厂商下载的JAR包放进文件夹,再导入。

2_加载驱动程序

try {
    Class.forName("实现java.sql.Driver接口的一个类DriverName");
} catch (ClassNotFoundException e) {
    System.out.println("驱动程序类没有找到");
    e.printStackTrace();
}

要点

1.DriverName根据连接的数据库种类不同所加载的驱动类不同,但不管是哪个类,他们一定实现了java.sql.Driver接口。

2.Class.forName("driverName")代码完成两个功能:一.把驱动程序加载到内存里;二.把当前加载的驱动程序自动去DriverManager注册。

3.此方法会报编译时异常ClassNotFoundException.通过自己内部加try,catch做异常处理。如果后面还会列出没有找到的类,那大多数原因是没加载程序jar包或类名写错。

4.DriverName在java.sql包里,当我们调用sql包里任何一个类(包括接口)的任何一个方法都会报一个编译时异常SQLException。

3_得到连接对象CONNECTION

通过DriverManager.getConnection()方法得到连接对象。

try {
    String url = "ip+port+dbName";
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    Connection con = DriverManager.getConnection(url, "sa", "");
    System.out.println("驱动程序加载完毕");
} catch (ClassNotFoundException e) {
    System.out.println("驱动程序类没有找到");
    e.printStackTrace();
} catch (SQLException e) {
    System.out.println("发生了sql异常");
    e.printStackTrace();
}

1.DriverManager是类不是接口,他是一个服务类,用于管理JDBC驱动程序,提供getConnection方法建立应用程序与数据库连接。DriverManager类会注册JDBC驱动程序来创建到数据库的连接。

2.DriverManager在java.sql包里,当我们调用sql包里任何一个类(包括接口)的任何一个方法都会报一个编译时异常SQLException。

3.方法参数URL:统一资源定位符。

jdbc:sqlserver://ip:1433;databaseName=dbName

第一部分:jdbc表示jdbc驱动程序。

第二部分:sqlserver表示的是连接数据库种类。

第三部分:ip地址,我们也会使用localhost或者127.0.0.1表示本机。

第四部分:1433端口号(port),每个数据库不同,sqlserver为1433,mysql为3306,oracle为1521。

第五部分:databaeName,所创建的数据库名称

4_创建STATEMENT对象

如果把Connection比作路,这里将Statement比作刚建好的路上的一辆数据的车。

Statement sta = con.createStatement();
System.out.println("得到货车 sta = " + sta);

5_执行SQL语句

Statement提供了两个方法executeUpdate(sql)与executeQuery(sql),前者executeUpdate(sql)用来执行insert,update,delete语句,后者执行select语句。

String sql = "insert into student (stuName, age ,address, email) 
values('wangwang', 12, '玉祥门', 'shudaizi@163.com')";
int row = sta.executeUpdate(sql);
if (row == 1) {
    System.out.println("save success");
} else {
    System.out.println("save error");
}

1.executeUpdate()返回值为int型,表示sql语句影响的行数。

6_关闭资源

因为Statement,Connection都是大对象,最后我们使用完要关闭它释放资源。用finally块来实现,因为它不管有没有异常都会执行。

要点

1.Connection与Statement对象设为全局变量,需要在finally块中使用

2.sta.close()与con.close()会报异常,需要异常处理

3.创建资源与关闭资源顺序相反

4.当创建con后数据库密码错误时,直接跳到catch块,再执行finally块,finally块调用它的close()方法,会报出空指针异常,所以必须加上if语句。

实现代码

package com.chppain;


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

public class TestJDBC1 {
    public static void main(String[] args) {
        Connection con = null;
        Statement sta = null;
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            System.out.println("驱动程序加载完毕!");
            String url = "jdbc:sqlserver://localhost:1433;databaseName=PAS";
            con = DriverManager.getConnection(url, "登录名", "密码");
            System.out.println("con");
            sta = con.createStatement();
            String sql = "insert into teacher (teanum, teaName, teatitle, teatypeid, teabtd, pwd, static)\n" +
                    "values ('20210001', '张三', '搬砖老师', 1, '1981-7-5', 1, 1)";
            String sql2 = "delete from teacher where teaNum = '20210001'";
            int rows = sta.executeUpdate(sql2);
            if (rows == 1) {
                System.out.println("op success");
            } else {
                System.out.println("op error");
            }


        } catch (ClassNotFoundException e) {
            System.out.println("驱动程序没有找到");
            e.printStackTrace();
        } catch (SQLException throwables) {

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

    }
}

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:17:51  更:2021-10-06 12:19:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:51:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码