实现JDBC编程

news/2024/9/23 4:50:38/

JDBC编程

JDBC —> java database connectivity 即java数据连接,
是执行sql语句的javaAPI(application programming interface),所谓的数据库是一类软件,就会提供对应的API,数据库有很多种,不同的数据库提供对应的API是不一样的,而这个API有java.sql.* 和 javax.sql.*包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库统一访问.


文章目录

  • JDBC编程
  • 一、提示
  • 二:实现编程
    • 1.实现数据源对象
    • 2.和数据库服务器建立连接
    • 3.构建sql语句
    • 4.把sql发送到服务器上并执行
    • 5.释放资源
  • 总结


数据库是一种"客服端–服务器"的结构,服务器往往会处理多个客服端的请求,前面我们通过cmd的形式以sql代码发送至服务器,服务器需要进行的操作是先检查该代码的正确性再执行 而这种方式会增大服务器的工作量,于是就出现用代码来完成客服端与服务器的连接—JDBC编程

一、提示

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

准备工作:
在这里插入图片描述
在idea项目中创建文件夹lib,并把该文件复制到lib中,再配置该jar包到本项目的依赖中:通过右键lib找到把该文件添加到位库,进而才能识别这是个"库"

二:实现编程

1.实现数据源对象

java">DataSource dataSource = new MysqlDataSource();//向上转型

DataSource 是个接口描述了数据从哪里来,数据库的位置,要使用该接口的方法就需要使用实现该接口的子类
设置对象的属性
1.数据库服务器的位置
2.访问服务器的用户名
3.访问服务器的密码

java">((MysqlDataSource) dataSource).setUrl("");
//描述jdbc的用途是给mysql使用的 
((MysqlDataSource) dataSource).setUser("");
//root ->  mysql自带的用户 管理员用户 权限最高!
((MysqlDataSource) dataSource).setpassword("");

其中url的格式为:
ip地址(描述mysql服务器在那个主机上)+端口号(区分一个主机的应用程序)+数据库名+‘?’+额外参数(解释说明这次数据库的连接)+'&'关闭加密

2.和数据库服务器建立连接

方法依然是数据源里面的,不过返回值的类型是Connection对象

java">Connection connection = dataSource.getConnection();

注意:
1.使用该方法的时候,数据库可能会出现未知的问题,所以需要处理异常
在方法上声名该异常 或者使用 try …catch…
2.此处连接成功的原因是必须要保证访问的数据库IP/端口号/数据库名/相关参数/用户密码

3.构建sql语句

比如,添加一个学生

java">String str = "insert into student values(1,"张三")";
PrapredStatemet statement = connection.prepareStatement(sql);

PrapredStatemet :“预编译的语句”:用来解析该语句的准确性
同时注意方法依然是上一个connect对象里的方法,用来编译sql语句同时返回PrapredStatement对象

4.把sql发送到服务器上并执行

法一:直接添加数据
完成上一个操作后就需要把该语句发送到服务器上并执行该语句
此时就要用到方法
举例

java">//最关键的操作
statement.executeUpdate();
返回值是整型,也就是在数据库上真正修改的代码的行数

在命令行,执行成功返回的数字在这里插入图片描述
除此之外,以上是用来增删改的一系列的操作在最关键的操作是
statement.executeUpdate(); 是正在和数据库服务器进行网络通信的
但是我们要在idea中进行查询某些数据的时候,有许多不同
此时方法是

java">ResultSet resultset = statement.executeQuery();
不出意外,返回的数据类型是"结果集合"故需要遍历,与迭代器的方法类似while(resultSet.next()){System.out.println(resultSet.getInt("id"));System.out.println(resultSet.getString("name"));}

栗子:

java">public class Test_jdbc2 {public static void main(String[] args) throws SQLException {//1.创建数据源DataSource dataSource = new MysqlDataSource();// 三个准备工作((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");((MysqlDataSource) dataSource).setUser("root");((MysqlDataSource) dataSource).setPassword("liusan11");//2.连接数据数据库服务器Connection connection = dataSource.getConnection();//3.构建sql语句String sql = "select * from student";PreparedStatement statement = connection.prepareStatement(sql);ResultSet resultSet = statement.executeQuery();//遍历结果集合while(resultSet.next()){System.out.println(resultSet.getInt("id"));System.out.println(resultSet.getString("name"));}//关闭资源resultSet.close();statement.close();connection.close();}
}

法二:通过控制台添加数据

java">public class jdbc3 {public static void main(String[] args) throws SQLException {//0.输入操作Scanner scan = new Scanner(System.in);System.out.println("请输入id :");int id = scan.nextInt();System.out.println("请输入名字 :");String name = scan.next();//1.创建数据源 并设置3个属性DataSource dataSource = new MysqlDataSource();((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");((MysqlDataSource) dataSource).setUser("root");((MysqlDataSource) dataSource).setPassword("liusan11");//2.获取连接对象Connection connection = dataSource.getConnection();//3.构造sql语句String sql = "insert into student values(?,?)";//? 表示占位符PreparedStatement statement = connection.prepareStatement(sql);//匹配占位符的顺序和类型 方法同样!statement.setInt(1,id);statement.setString(2,name);//4.发送到服务器int n = statement.executeUpdate();System.out.println(n);//5.释放资源statement.close();connection.close();}
}

5.释放资源

java">statement.close();
connection.close();
resultSet.close();

这里必须要保证顺序与先前的相反!

总结

大概就这样了,本节内容主要就是通过java代码来实现客服端和服务器的通信,重点在于实现代码编程可以分以下几个步骤
1.创建数据源对象 2.建立客服端和服务器的关系3.创建sql代码并发送到服务器执行4.释放资源
每个步骤都建立依赖的联系:关系从数据源对象中方法得来,预编译语句从关系的编译中的方法而来,只要记住这个规律,代码手到擒来,每一句代码实现的原因以及这个过程都是显而易见的!


http://www.ppmy.cn/news/1465594.html

相关文章

Nginx一个端口代理多个vue项目,通过不同路由转到不同系统,反向代理Apache进行文件处理

需求:由于一些因素限制,需要尽可能的少开放外部端口访问,这里将多个vue项目通过一个nginx端口进行代理,由不同的路由来确定访问哪些项目,apache同理 nginx代理多个vue项目 安装和配置nginx的基础教程这里就不写了&…

Linux学习笔记(清晰且清爽)

本文首次发布于个人博客 想要获得最佳的阅读体验(无广告且清爽),请访问本篇笔记 Linux安装 关于安装这里就不过多介绍了,安装版本是CentOS 7,详情安装步骤见下述博客在VMware中安装CentOS7(超详细的图文教…

Adobe InDesign 专业桌面排版软件下载安装,Id软件丰富的排版和设计工具!

Adobe InDesign这款革命性的应用程序不仅彻底改变了出版业的生产流程,更引领着设计领域向前迈进。 在Adobe InDesign的众多强大功能中,对OpenType字体的支持堪称其一大亮点。OpenType字体不仅拥有更加丰富的字体样式和字符集,还具备更为灵活…

vue的module、chunk、bundle分别是什么意思有何区别

在Vue.js项目中,module、chunk和bundle是构建和打包过程中常见的概念。以下是它们各自的定义和区别: 1. Module(模块) 定义: 在Vue中,特别是与Webpack或其他模块打包器一起使用时,module通常…

深入分析 Android Activity (二)

文章目录 深入分析 Android Activity (二)1. Activity 的启动模式(Launch Modes)1.1 标准模式(standard)1.2 单顶模式(singleTop)1.3 单任务模式(singleTask)1.4 单实例模式&#xf…

oracle sys无法远程访问问题解决

/myweb/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora sys的默认密码是manager,system的默认密码是change_on_install,为什么使用默认密码都无法正常登录呢?这就很奇怪了 解决: Winr——->Cmd——->输…

怎么提取pdf格式中的英语单词

思路: 第一步:适用python把需要导出的pdf文件单词导出到txt 第二步:把导出的txt导入到软件单词库,例如,金山词霸等软件内 第三步:熟练掌握以及删除单词库部分单词,达到对英文标准的单词记忆&…

C#中的数组探索

在C#编程语言中,数组是一种基本的数据结构,用于存储固定大小的同类型元素序列。本文将深入探讨C#数组的各个方面,包括定义、赋值、范围操作、切片、多维数组(矩形与锯齿形)、简化初始化表达式以及边界检查。 数组定义…