Java的数据库编程:JDBC

2023-11-09

目录

一、JDBC是什么?

二、使用步骤

1.首先将JDBC的包引进java中

 2.创建新的类来写代码

 3.描述你的服务器

4.设置你的数据库地址,数据库用户名,数据库密码

5.连接数据库

6.书写你所要执行的SQL语句

7.把字符串风格的sql转化成一个对象

8.执行语句

9.回收资源

三.使用JDBC的好处是什么​​​​​​​


一、JDBC是什么?

 

JDBC是数据库连接是一种用于执行SQL语句的java API,就类似于一个网址,它是java中的数据库连接规范,这个API里面由java.sql.*,javax.sql.*包中的一些类和接口组成,这些都可以为实现sql做基础,这些都为java开发人员操作数据库提供了一个标准的API,可以为多重关系数据库提供同意的访问

二、使用步骤

1.首先将JDBC的包引进java中

*第一步需要创建一个新的java项目,在这个项目里面创建一个新的文件夹

 *第二步将你下载的jar包复制粘贴到这个文件夹里面

  那么应该如何下载这个包:

      可以在maven的官网下载:      Maven Repository: Search/Browse/Explore (mvnrepository.com)

随便选择一个都可以

 下载好了之后就可以将此压缩包放到新文件夹里面了

 

 

*最后一步你需要读取一下这个包这也是不可缺少的一步

这样就将包引进完成了

 2.创建新的类来写代码

 

 3.描述你的服务器

DataSourse 是一个接口 是JDBC提供的类和方法中的一个 javax.sql这就是JDBC的包
import javax.sql.DataSource;需要引入这个包
这样就描述了数据库服务器在哪  DataSource接口通过MysqlDataSource实现具体的方法 向上转型
DataSource dataSource = new MysqlDataSource();

 

4.设置你的数据库地址,数据库用户名,数据库密码

        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false");
        
        ((MysqlDataSource) dataSource).setUser("root");
        
        ((MysqlDataSource) dataSource).setPassword("123456");
((MysqlDataSource) dataSource)这是一个向下转型,相关参数的具体类型是DataSource,后面如果数据库进行了改动基本代码不用变属于低耦合的
"jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false":
jdbc:mysql 表示这个url是JDBC MySQL的url相当于网址  127.0.0.1 IP地址描述了网络上一个主机的位置 这个IP地址是一个特殊的就相当于this直接访问当前主机的IP地址,java是要访问的数据库 characterEncoding=utf8是字符编码格式,useSSL=false传输过程中是否需要加密 一般没有重要数据的话不需要加密
设置登录数据库的用户名  mysql的默认用户名是root
设置登录数据库的密码   密码为自己设置的密码

 

5.连接数据库

Connection connection = dataSource.getConnection(); 

要使用jdbc的connection
getConnection()这个方法是受查异常需要声明一下

6.书写你所要执行的SQL语句

增删改查

        //String sql = "insert into student values('小三',20,1234)";//可以这么写但是这样写固定了可以让用户自己输入  这里的语句不需要加;
        String  sql = "insert into student values(?,?,?)";//这里的?代表不确定
        Scanner input = new Scanner(System.in);

        System.out.println("请输入要插入的名字");
        String name = input.next();
        System.out.println("请输入要插入的年龄");

        int age = input.nextInt();
        System.out.println("请输入要插入的id");

        String id = input.next();
        String sql = "delete from student where name = ?";
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你要删除的名字:");
        String name = input.next();
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要修改的名字:");
        String name = input.next();
        System.out.println("请输入要修改人的id:");
        String id = input.next();

      
        //sql语句
        String sql = "select * from student";

7.把字符串风格的sql转化成一个对象

        PreparedStatement statement = connection.prepareStatement(sql); //通过connection里面的prepareStatement方法转换为对象
        //将用户输入的放到sql语句中去
        statement.setString(1,name);//这里的1 2 3 代表?的顺序
        statement.setInt(2,age);
        statement.setString(3,id);

其他的都类似,后面如果你发现你的SQL语句执行不了的话你可以通过查看statement,来看你赋值后的sql语句是否正确从而改正错误

System.out.println("statement:" + statement);

8.执行语句

        int a = statement.executeUpdate();
        System.out.println("a=" + a);
只有select语句需要用到executeQuery
insert,update,delete语句都会使用executeUpdate,返回值为一个整数表示影响的语句数

select语句执行需要接收因为返回的是一个完整的表

ResultSet resultSet= statement.executeQuery();//返回的时候需要按所返回的所有列来接收
        while(resultSet.next()){//按表里面有的内容一列一列的输出 这里的while表示行数
            String name = resultSet.getString("name");
            int age = resultSet.getInt("age");
            String id = resultSet.getString("id");
            System.out.println("name " + name + " age " + age + " id " + id);
        }

9.回收资源

最后你需要回收资源此时你需要先释放statement,再释放connection就和你打开冰箱门然后来开抽屉取东西一样,你需要先关上抽屉才能关冰箱门

如果是选择语句的话你需要多回收一步

resultSet.close();
        statement.close();//先释放转化
        connection.close();//在释放连接

 

这样一个完整的sql语句就执行完毕了

三.使用JDBC的好处是什么

1.java语言访问数据库操作完全面向抽象接口编程;
2.开发数据库用用不用限定在的定的数据库厂商的API;
3.程序的可移植性大大增加

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java的数据库编程:JDBC 的相关文章

随机推荐

  • 假设检验/T检验/F检验/Z检验/卡方检验

    显著性水平 一个概率值 原假设为真时 拒绝原假设的概率 表示为 alpha 常用取值为0 01 0 05 0 10 什么是P值 p值是当原假设为真时样本观察结果及更极端结果出现的概率 如果P值很小 说明这种情况发生的概率很小 如果这种情况还
  • react面试题(三)

    1 setState 何时同步何时异步 1 setState 只在合成事件 react为了解决跨平台 兼容性问题 自己封装了一套事件机制 代理了原生的事件 像在jsx中常见的onClick onChange这些都是合成事件 和钩子函数 生命
  • hive遇到的错误

    1 数据库的命名不能用数字开头 0 jdbc hive2 192 168 171 151 10000 gt create database 0328 不区分大小写字母 Error Error while compiling statemen
  • 离散数学期末复习-求主范式

    文章目录 析取范式与合取范式 定义 简单析取式 析取式 简单合取式 合取式 析取范式 合取范式 范式 公式A的析取范式 公式A的合取范式 命题公式的范式 求公式A的范式的步骤 求公式的范式举例 极大项与极小项 定义 主析取范式与主合取范式
  • 银河麒麟操作系统(kylin os)学习

    poweroff 关机命令 sudo su 进入超级用户 su username 切普通用户 Ctrl Alt t 打开终端terminal窗口 Ctrl Alt d 最小化全部应用 然后显示桌面 dpkg i libqt5 deb 安装d
  • 安卓app与阿里云服务器的无线通信(非局域网)

    参考 安卓app与阿里云服务器的无线通信 非局域网 作者 图触靓 发布时间 2020 08 01 16 13 14 网址 https blog csdn net bhbhhyg article details 107732156 目录 写在
  • react学习笔记9:循环处理和数组map函数

    为什么80 的码农都做不了架构师 gt gt gt 在我们实际开发中 循环是必不可少的 尤其在表格中的数据显示 我们会把ajax的json数据显示在表格中 1 一个最简单的例子 import React from react import
  • STM32与FPGA之间的SPI通讯

    STM32与FPGA之间的SPI通讯 SPI通讯协议 SPI协议物理层 协议层 STM32的SPI特性及架构 STM32的SPI架构 SPI初始化结构体 STM32标准库 STM32实验代码 FPGA从机代码编写 实验结果 SPI通讯协议
  • 车间束流变压器定标-2021.2.3

    标定了这么多次 感觉这是最来劲的一次 就兴奋的贴在这里了 无他 因为国产精品示波器的使用 试了一下极限 结果喜人 眼神好的留意一下最后一幅图 看看惊不惊艳 惨不忍睹的顶降还是无视吧 加工的这一批次的磁环太丿了 车间束流变压器定标 2021
  • Ubuntu安装SSH/FTP/NFS

    sudo apt get update 一 SSH sudo apt get install openssh server sudo ps e grep ssh 有出现sshd说明ssh服务已经启动 负责执行 sudo service ss
  • 在Windows和树莓派之间通过WinSCP传送文件,并开启root用户远程登录。

    目录 下载WinSCP工具 设置树莓派root用户密码 打开root远程登录的权限 可选 使用WinSCP远程登录 下载WinSCP工具 要想在Windows和树莓派之间传输文件 我们需要借助一个工具WinSCP WIn指的是Windows
  • 【VUE】vue组件之间通信有几种方式

    vue组件之间通信可分为以下几种 props和 emit 也就是常说的父子组件通信 常用 attrs和 listeners 中央事件总线 非父子组件间通信 v model provide和inject parent和 children vu
  • 新手编写IntelliJ IDEA插件

    需求目的 可能你会想什么场景会需要用到插件开发 其实插件开发算是一种通用的解决方案 由服务平台定义标准让各自使用方进行自需的扩展 这就像我们非常常用的 P3C 代码检查插件 代码审计插件 脚手架工程创建插件 自动化API提取插件 单元测试统
  • Scribe配置文件解析

    Scribe的配置文件由全局的section和一个或多个store的section组成 这篇来了解一下scribe的配置文件 在源码包的examples目录下有多个配置文件实例 examples example1 conf 模拟服务端 ex
  • 缺失值处理 - 拉格朗日插值法 - Python代码

    目录 缺失值处理 拉格朗日差值法的理论基础 拉格朗日插值法代码实现 其他数据预处理方法
  • 【Git】Git复习

    常用的Linux命令 1 cd 改变目录 2 cd 回退到上一个目录 直接cd进入默认目录 3 pwd 显示当前所在的目录路径 4 ls ll 都是列出当前目录中的所有文件 只不过ll 两个ll 列出的内容更为详细 5 touch 新建一个
  • python3把jpg png图片转换为ico图标

    环境ubuntu 20 04系统 python3 需要安装PythonMagick 然后可以直接调用PythonMagick包了 window暂时没有测试 sudo apt get install y python3 pythonmagic
  • 手把手带大家搭建一台服务器(腾讯云为例)

    今天带大家入门如何搭建服务器 主要是面向小白读者 先说好 我自己也不是专业做后端的 只不过平时爱折腾点项目玩玩 所以有点小经验 本文就是基于这点小经验讲解的 如有不当之处还请谅解 一 什么是服务器 这个问题被问过不止10次 对于小白来说服务
  • java rsa加密数据大小_RSA加密解密(无数据大小限制,php、go、java互通实现)

    RSA加解密中必须考虑到的密钥长度 明文长度和密文长度问题 明文长度需要小于密钥长度 而密文长度则等于密钥长度 因此当加密内容长度大于密钥长度时 有效的RSA加解密就需要对内容进行分段 这是因为 RSA算法本身要求加密内容也就是明文长度m必
  • Java的数据库编程:JDBC

    目录 一 JDBC是什么 二 使用步骤 1 首先将JDBC的包引进java中 2 创建新的类来写代码 3 描述你的服务器 4 设置你的数据库地址 数据库用户名 数据库密码 5 连接数据库 6 书写你所要执行的SQL语句 7 把字符串风格的s