Java连接数据库(JDBC非常重要)

news2024/9/20 16:44:46

目录

一.数据库连接

1.1之前如何操作数据库

1.2.实际开发中如何操作数据库?

二.JDBC(Java Database Connectinity)(重要)

2.1.JDBC的概念

 2.2 JDBC核心思想

 2.2.1 MySQL数据库驱动

2.2.2 JDBC API

2.3JDBC 环境搭建

2.4准备一张表

2.4.1 创建student表

2.4.2.向表中插入数据

三. JDBC的开发步骤(非常重要)

3.1. 注册驱动

3.2 获取连接对象

3.3 获取发送SQL语句的对象

3.4 编写SQL语句

3.5执行SQL语句

3.6 处理结果

3.7 释放资源


 

 

👌 棒棒有言:生活不可能一帆风顺,总会有波折,总会有险阻。生活是个爱开玩笑的孩子,也许今天给你所有,明天又会让你一无所有,无需烦恼,该来的总会来,再黑的夜晚也会有黎明到来的那一刻。不管生活有多么曲折,只要拥有幸福的态度就能挺过漫漫长夜,就能迎来美好的明天。

👌 本章简介:JDBC(Java Data Base Connectivity,java数据库连接),是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。

简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。

👍  作者:get棒棒给个关注呗

👍  重要:请给个关注哦!
 

一.数据库连接

1.1之前如何操作数据库

(1)使用DOS命令窗口,输入“mysql -hlocalhost -u数据库用户名 -p数据库密码”命令连接数据

库,编写SQL语句(SQL语句以分号;或者\g结尾),回车运行,查看操作结果(受影响行数或结

果集)

(2)使用MySQL数据库自带的命令窗口,输入数据库密码连接数据库,编写SQL语句(SQL语句

以分号;或者\g结尾),回车运行,查看操作结果(受影响行数或结果集) 

(3)使用数据库连接软件(SQLyog)连接数据库,通过图形化界面或者在查询编辑器中编写

SQL语句,运行SQL语句查看操作结果(受影响行数或结果集) 

1.2.实际开发中如何操作数据库?

在实际开发中,当用户的数据发生变化时,不会也不可能通过客户端连接数据库去操作SQL语句,

因为在实际开发中,数据的操作量很大,如果使用客户端操作数据库,无法保证SQL语句的正确性

和执行效率。  

二.JDBC(Java Database Connectinity)(重要)

2.1.JDBC的概念

(1)JDBC(Java DataBase Connectivity)Java连接数据库的规范(标准),可以使用Java语

言连接数据库,从而对数据进行增删改查(CURD)操作。 

 2.2 JDBC核心思想

Java中定义了访问数据库的接口,可以为多种关系型数据库提供统一的访问方式。由数据库厂商提

供驱动实现类(Driver数据库驱动)。 

 2.2.1 MySQL数据库驱动

mysql-connector-java-5.1.x 适用于5.x版本

mysql-connector-java-8.1.x 适用于8.x版本

http://本文链接:https://blog.csdn.net/keyboard_/article/details/114337739

2.2.2 JDBC API

JDBC是由多个接口和类进行功能实现的。

类型权限定名功能
classjava.sql.DriverManager管理多个数据库驱动类,提供了获取数据库连接的方法
interfacejava.sql.Connection代表一个数据库连接(当connection不为null时,表示已连接数据库)
interfacejava.sql.Statement发送SQL语句到数据库工具
interfacejava.sql.PreparedStatement发送SQL语句到数据库工具
interfacejava.sql.ResultSet保存SQL查询语句的结果数据(结果集)
classjava.sql.SQLException处理数据库应用程序时所发生的异常

2.3JDBC 环境搭建

(1)在项目下创建lib文件夹,用于存放jar文件。

(2)将mysql驱动mysql-connector-java-5.1.x复制到项目的lib文件夹中。

(3)将选中lib文件中的jar文件配置到项目中。

2.4准备一张表

创建数据库jdbcdatabase,专门用来存储学习jdbc要用的表

2.4.1 创建student表

CREATE TABLE IF NOT EXISTS `student`(
`tid` INT(10) AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(20) NOT NULL COMMENT '姓名',
`age` INT(2) NOT NULL COMMENT '年龄',
`gender` VARCHAR(5) NOT NULL COMMENT '性别',
`phone` VARCHAR(11) UNIQUE NOT NULL COMMENT '手机号码',
`identitycard` VARCHAR(18) UNIQUE NOT NULL COMMENT '身份证号码',
`address` VARCHAR(20) NOT NULL COMMENT '住址',
 PRIMARY KEY (`tid`)
);

2.4.2.向表中插入数据

INSERT  INTO `student`(`tid`,`name`,`age`,`gender`,`phone`,`identitycard`,`address`) VALUES (1001,'张三',20,'男','13112345678','340825200212241936','安徽合肥蜀山区');

INSERT  INTO `student`(`tid`,`name`,`age`,`gender`,`phone`,`identitycard`,`address`) VALUES (1002,'李红',18,'女','13111223344','340825200408151936','安徽合肥庐阳区');

三. JDBC的开发步骤(非常重要)

3.1. 注册驱动

使用Class.forName("包含完整路径的驱动类");//手动加载字节码文件到JVM中。

// 1、注册驱动
Class.forName("com.mysql.jdbc.Driver");

3.2 获取连接对象

通过DriverManager.getConnection(url,user,password)获取数据库连接对象

url:mysql数据库的路径

user:mysql数据库用户名

password:mysql数据库密码

// 2 、获取数据库连接对象
String url = "jdbc:mysql://127.0.0.1:3306/jdbcdatabase";
String user = "root";
String password = "123456";
Connection connection = DriverManager.getConnection(url, user, password);

3.3 获取发送SQL语句的对象

通过Connection对象获取Statement对象,用于发送SQL语句,实现对数据库进行访问。

//3、获取发送SQL语句的对象

Statement statement = connection.createStatement();

3.4 编写SQL语句

// 4、编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法错误,这里sid是自增长,所以不需要写
String sql = "INSERT  INTO `student`(`name`,`age`,`gender`,`phone`,`identitycard`,`address`) 
VALUES ('王五',21,'男','13825869876','340825200109151928','安徽合肥包河区');";

3.5执行SQL语句

// 5、执行SQL语句
//DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影响的行数(int类型)
//DQL语句:对于查询数据,调用executeQuery()方法,返回一个结果集(ResultSet类型)
int result = statement.executeUpdate(sql);

3.6 处理结果

处理第5步返回的数据。对返回的受影响行数结果进行逻辑判断

// 6、处理结果,如果返回的受影响行数不为0,说明数据插入成功
if (result != 0) {
	System.out.println("数据插入成功");
} else {
	System.out.println("数据插入失败");
}

3.7 释放资源

释放(关闭)所使用到的所有资源对象,遵循”先开的后关,后开的先关“原则。

// 7、释放资源,遵循“先开后关,后开先关”的原则
if (connection != null) {
	try {
		connection.close();
	} catch (SQLException e) {
		e.printStackTrace();
	}
}

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

//查询操作中多一个关闭resultSet
if(resultSet!=null){
	try {
		resultSet.close();
	} catch (SQLException e) {
		e.printStackTrace();
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计Django三星小区车辆登记系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Json简介与基本使用

前言 本文为Json简介与基本使用相关知识,下边具体将对什么是JSON,XML与JSON的区别,JSON的语法格式,JSON数据的转换(包括:Java对象转换为JSON格式、JSON格式转换为Java对象)等进行详尽介绍~ &am…

学习 MySQL:什么是分页

在本文中,我将解释在MySQL中,什么是分页以及我们如何实现它。当我们从 MySQL 数据库填充大型数据集时,读取同一页面上的所有记录并不容易。使用分页,我们可以将结果集划分为多个页面,这增加了结果集的可读性。在本文中…

协议-序列化-http-Cookie-Session-https

文章目录再谈协议什么是序列化,什么是反序列化?为什么要进行序列化和反序列化?怎么进行序列化和反序列化呢?网络计算器版本总结http协议httpurlencode&urldecode一. 格式认识二 代码实现一个http协议下的服务器安装telnet服务…

javaScript 进阶之路 --- 《加深理解回调函数》

前言: 回想当初第一次看到“回调函数”这个名词的时候,真的快把我难哭了。所有视频教程在讲到某个知识点的时候,大概都会说一句:“啊,这里怎么办呢?这里我们就需要用到一个回调函数...”。 等等&#xff0…

校园论坛(Java)—— 数据报表模块

校园论坛(Java)—— 数据报表模块 文章目录校园论坛(Java)—— 数据报表模块1、写在前面2、系统结构设计2.1 各个页面之间的调用关系2.2.3、数据报表设计3.1 数据报表主界面的实现3.2 发表数Top5的普通帖子3.3 回帖数Top5的普通帖…

技术人员创业的第一步分析(续,可听音频)

概述:昨天的文章发布以后,在腾讯云TVP专家群里和多个技术群里都引起了一些讨论,基于这些讨论,有了今天的这篇续章。里面谈到了这次创业中,青润经历过的几次生死关头,是真的差点离开人世,而不是想…

2022年物联卡的发展前景如何

在这个万物互联的时代,针对于企业设备联网的物联卡就显得格外重要了,而共享单车,移动支付,智慧城市,自动售卖机等企业采购物联卡会面临着各种问题,低价陷阱,流量虚假,管理混乱&#…

JMeter 做性能测试,YYDS!

2. JMeter下载和安装 JMeter可以在JMeter的官方网站下载,下载链接如下图所示,xmeter君写本文的时候(2016/11)可以下载到的最新的版本是3.0。 下载后解压到你系统下的任意目录,我们称该目录为%JMETER_HOME%,…

Dart语言简介

简单介绍Dart语言 Dart是一种针对客户优化的语言,亦可在任何平台上快速开发的应用陈旭。 目标是为多平台开发提供最高效的变成语言,并为应用程序框架搭配了领会的运行时执行平台。 Dart特点 Dart语言 类型安全,使用静态型检查来确保变量的…

Linux命令之常用基础命令备查手册

一、前言 家里领导因公司系统部署国产化发展趋势,需要学习Linux。作为Linux初学者,希望能有一篇博文提供学习快速学习和掌握Linux系统的常用基础命令。为了满足领导要求,特编写此博文,尽量将常用Linux命令囊括进来,以示…

基于ssm的宠物商城网站设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

HTML5期末大作业:基于HTML+CSS+JavaScript实现中国风文化传媒企业官网源码

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

【一条命令搞定rabbitmq的安装与配置】

提示:宝塔面板安装docker/docker-compose,一条命令搞定rabbitmq的安装与配置 文章目录前言一、docker-compose.yml配置二、安全组规则添加端口三、通过浏览器访问rabbitmq的管控页面总结前言 已经安装好了宝塔面板、并且可以在Docker栏目,选…

[附源码]计算机毕业设计物业管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

微服务框架 SpringCloud微服务架构 16 SpringAMQP 16.2 入门案例的消息发送

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构16 SpringAMQP16.2 入门案例的消息发送16.2.1 直接开干16.2.2 总结16 Spri…

八股文之算法

文章目录剑指offer链表1 从尾到头打印链表方案一:非递归方案二:递归方案三:普通数组存储方案三:递归2 链表反转方案一:使用栈解决方案二:双指针迭代方案三:递归3 反转链表一部分方法一&#xff…

Android 基础知识3-4 Activity的声明周期

引言: 在前面的几个例子中,我们发现所有集成Activity的类都重写了onCreate方法,程序运行就会自动进入这个方法。其实Activity类中还有很多类似onCreate的方法,比如onStart、onReaume、onPause、onDestroy等,而这些方法…

[黑马程序员C++笔记]P168-P173模板-函数模板

视频地址:黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili 目录 P167模板-模板的概念 P168模板-函数模板的基本语法 P169模板-函数模板的注意事项 P170模板-函数模板案例-数组排序 P171模板-普通函数与函数模板的区别 P172模板-普通…

Android 接口的default 方法运行时报错AbstractMethodError

【问题描述:接口default方法AbstractMethodError】 记录一个Android项目中遇到的问题,我们通过exclude方式重写了一个依赖,改用本地的实现,其中一个接口的default 方法,在运行时报错:AbstractMethodError&…