杂记——25.eclipse如何连接并实现对数据库的操作

news2024/11/27 8:37:47

这篇文章我们来讲一下eclipse(即编辑器)如何连接并实现对数据库的操作,这里以eclipse为主连讲解演示一下。

第一步:

查看我们本机安装的数据库的版本,即查看我们本机是否安装了数据库

在命令提示窗口输入:mysql --help

第二步:

打开eclipse,创建一个普通的java项目:

 

第三步:

在src下创建一个包(包名随便命名),在项目下,创建一个文件夹,命名为lib,然后在lib中导入jar包(这个jar包可以在CSDN上或者是Mysql官网上下载)

如下图所示:

 

 第五步:

右击项目,点击Properties,选择java Build Path,点击Add JARs...,选择相应的文件,如下图所示:

第六步:

在包下面创建.java的类,并书写代码:

代码如下:

package com.qcby.db;

import java.sql.*;

import com.mysql.jdbc.Statement;

public class Dbutil {
	
	static {
		try {
			System.out.println("开始加载驱动======");
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("加载驱动成功======");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("加载驱动失败!!!!!!");
		}
	}
	
	private static Connection con;
	private static String url = "jdbc:mysql://localhost:3306/hbu0516?useUnicode=true&characterEncoding=utf-8";
	private static String user = "root";
	private static String password = "2020";
	
	public static Connection getConnection()  {
		System.out.println("连接获取开始======");
		if(con==null) {
			try {
				System.out.println("连接为空,开始构建连接======");
				con = DriverManager.getConnection(url,user,password);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("连接构建失败,请查看原因!!!!!!");
			}
			System.out.println("连接构建成功======");
		}
		System.out.println("连接获取成功======");
		return con;
	}
	
	public static void execQuery(String sql) {
		Connection connection = getConnection();
		
		try {
			Statement statement = (Statement) connection.createStatement();
			ResultSet rs = statement.executeQuery(sql);
			while(rs.next()) {
				int id = rs.getInt("id");
				String userName = rs.getString("user_name");
				int userage = rs.getInt("user_age");
				System.out.print(id+"  ");
				System.out.print(userName+"  ");
				System.out.println(userage);
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void execUpadte() {
		Connection connection = getConnection();
		String Updatesql = "update t_user set user_name=? where id = ?";
		try {
			PreparedStatement statement = connection.prepareStatement(Updatesql);
			statement.setString(1,"wangwu");
			statement.setInt(2, 2);
			int eu = statement.executeUpdate();
			System.out.println(eu);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		String sql1 = "select * from t_user";
		execQuery(sql1);
		execUpadte();
	}

}

下面通过截图来讲一下:

解析:

我们知道,数据是存储在硬盘上的,这与硬件有关,数据库是在操作系统之上的,可以调用操作系统来管理硬件,从而实现对数据的管理。我们用户和程序是无法直接操作硬件的,我们要实现某些功能必须要通过操作系统来调用硬件来实现。所以,我们要实现对数据库中的数据的管理,就必须调用可以操作数据库的jar包,也就是驱动程序,这个就是我们在lib文件夹中导入的包

然后,我们对项目进行设置,使得我们项目在运行的时候,可以加载那个jar包,这就是我们第五步做的事情。

然后,我们开始写代码。

首先,我们写了一个静态代码块(第9-19行),静态代码块的特点是在程序执行的时候就会执行,并且只执行一次。然后,我们来看静态代码块中的内容,其实关键的就一句——第11行,这句话的作用是利用反射获取这个类的字节码文件,我们可以理解为加载这个类,而这个类就是我们的mysql的驱动程序,通过反射,我们调用了这个文件,然后加载了mysql的驱动,可以实现对mysql的操作了,其余的就是打印信息了,这个就不是重点了。

其实到这里,我们就可以运行一下,看是否是正确的。这里说两个运行类的方法。第一个就是在类里面写一个空的主方法,这样类就可以运行了,那么这个静态代码块也就可以运行了;第二个就是在方法上面加上@Test注解,不过这个是有要求的,@Test注解只能放在方法的上面,也就是说只能运行方法,而不能运行类,并且我们还要注意这个方法是否是独立的,即是否可以独立的运行。

我们前面调用了数据库的驱动程序,也就是说我们可以操作数据库了,但是,我们还没有与数据库建立连接,只有在我们与数据库建立连接之后,我们才能运行数据库。

java的sql类库里面,封装了一个Connection类,是专门用来建立与数据库的连接的。所以,我们在第21行创建了一个Connection类对象con,然后,我们继续思考,我们要与数据库建立连接,就必须知道数据库的一些信息,什么信息?至少应该知道url,用户名,密码;所以我们在第22,23,24分别定义了变量来存储数据库的url,用户名,密码。

然后,我们继续思考。我们java用一个类来承担与数据建立连接的功能,那么也就是说,我们所有与连接有关的内容都是放在这个类里面的,或而言之,这个类承担了与数据库连接的一切功能。那么就好理解了,我们调用Connection类里面的方法,传入数据库的url,用户名,密码等参数,然后这个类就帮我们完成了数据库的连接,然后我们把这个类返回回来,这样我们在别处要用的时候,就直接调用这个方法,利用这个返回回来的类,就能建立与数据库的连接啦。这就是第26——第41行的逻辑。当然,里面还有一些打印输出和抛异常等内容,这些都不是主要的东西。

然后,我们继续思考。此时此刻,我们可以驱动数据库了,然后与数据库的连接也建立了,那么我们就可以对数据库进行操作了,即对数据进行增删改查。怎么做?利用我们前面说的那个类Connection对象,我们利用这个类里面的方法来做。statement:报表,清单;我们利用Connection类里面的方法,创建一个statement类对象,我们用这个对象里面的具体方法来实现具体的SQL语句的执行。就比如,我们要执行查询所有人的信息,我们就用statement类里面的executeQuery方法,我们需要传入的就仅仅是SQL语句了。执行完成之后,肯定有返回值,它返回的是我们这个表里面的所有数据,我们用一个ResultSet类的对象来接收。接收完成之后呢,我们肯定就是要打印了,怎么打印呢?这个其实与我们接收数据的类型ResultSet的格式有关,这个具体的我也不是很清楚。反正,就是我们要把它打印出来。这个就是第43——第61行的主要逻辑。

然后后面的逻辑和上面的是类似的。主要的区别就在于类里面的方法的调用不同,但是主体逻辑和上面是一样的。

至此,我们通过eclipse连接到数据库,实现了对数据库中数据的操作,实现了通过程序才操作数据的功能。

其实后面的内容还比较多,比如SQL语句的拼接,比如如何实现动态SQL,比如前后端交互等等,都是比较麻烦的,但是,我们这个是基础。要能够理解。

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

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

相关文章

games103——作业3

实验三主要使用FEM和hyperelastic模型完成弹性体的模拟 完整项目已上传至github。 文章目录 Linear finite element method(FEM)二维空间有限元方法变形梯度(Deformation Gradient)格林应变(Green Strain)应变能量密度函数(Strain Energy Density Function)力(Force) Finite Vo…

威胁猎人 | 2018年上半年国内公有云云上资产合规现状报告

声明:本报告版权属于威胁猎人情报中心,并受法律保护。转载、摘编或利用其它方式使用本报告文字或者观点的,应注明“来源:威胁猎人”。违反上述声明者,将追究其相关法律责任。 一、报告背景 自2005年亚马逊发布AWS伊始…

基于nodejs+vue3 的高仿网易云音乐

大家好,我是小寻,欢迎大家关注我的公众号:工具优选,加入前端、java群聊哦! 今天给大家分享一个超高水准的项目:基于nodejsvue3研发的高仿网易云音乐,项目内容出自寻码网! 技术栈&a…

行业唯一丨冠珠瓷砖荣获人民日报社“ESG年度案例”

践行社会责任,推动品牌高质量发展。5月11日,由人民日报社指导、人民日报社经济社会部主办的“中国企业社会责任高峰论坛”在上海盛大举行。 本次论坛围绕乡村振兴、共同富裕、绿色低碳等重点议题进行深入研讨,邀请国家发展和改革委员会、商务…

Thread线程学习(2) Linux线程的创建、终止和回收

目录 1.首先要了解什么是线程ID,以及它的作用是什么 2.创建线程 3.终止线程 4.回收线程 5.总结 在Linux系统中,线程是轻量级的执行单元,能够在同一个进程中并发执行。本文将介绍如何在Linux环境下创建、终止和回收线程,并提供…

〖Web全栈开发③〗—HTTP协议和静态web服务器

HTTP协议和静态web服务器 (一)三次握手和四次挥手(二)HTTP协议2.1 HTTP协议的定义2.2 HTTP协议的组成 (三)搭建python自带静态web服务器3.1 静态web服务器是什么3.2 如何搭建python自带的静态web服务器3.3 …

【栈和队列】的特性以及基本接口的实现

目录 一、栈 1.1 栈的概念 1.2 栈的接口实现 二、队列 2.1 队列的概念 2.2 队列的接口实现 2.3 栈和队列的区别 三、栈和队列LeetCode练习 3.1 力扣_232.用栈实现队列 3.2 力扣_225.用队列实现栈 3.3 力扣_622.设计循环队列 3.4 力扣_20.有效的括号 一、栈 第一次学…

电容在电路中的作用

电容、也称为电容器,字面意思理解就是一种“装电的容器”,是一种容纳电荷的器件。它拥有两个电极板,由两个电极板及其中间所夹的介质封装而成。 常用电容极性判断:   铝电解电容:长脚为正极,短脚为负极&…

【MySQL学习】MySQL索引特性

文章目录 一、初识MySQL索引1.1 MySQL索引的概念1.2 MySQL索引的作用 二、MySQL的数据存储2.1 MySQL存储与磁盘之间的关系2.2 MySQL与磁盘交互的基本单位2.3 认识数据页Page 三、索引的理解3.1 测试案例3.2 探究单个和多个Page存储数据时的情况3.3 页目录3.4 为什么InooDB存储引…

《面试1v1》CAS

我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。 面试官: 上个面试官对你的基础有了一定了解,听说你小子很不错!下面我们聊点有深度的。 面试官: 简单介绍下 CAS 你了…

10款Photoshop免费在线工具推荐

AdobePhotoshop下载繁琐,付费昂贵,让很多设计师望而却步! 经过几个小时的筛选和测试,筛选出10款Photoshop免费在线工具,与Photoshop一样强大。让我们看看! 1.即时设计 智能抠图 当我们想要去重图片背景&…

【鲁棒优化、机会约束】具有分布鲁棒联合机会约束的能源和储备调度研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

JAVA中的深情哥-Exception(异常)-上

文章目录 目录 文章目录 前言 一,Exception的起源 二,异常类 三,自定义异常 总结 前言 大家好,我是最爱吃兽奶,今天给大家介绍一下java中的深情哥 - Exception 秋风依依秋水寒,一点离愁两黯然;今生默默唯轻舞&a…

抖音林客系统开发

抖音林客系统是一款基于AI技术的推荐算法系统,主要应用于抖音平台中用户的内容推荐和个性化服务。开发抖音林客系统需要掌握以下关键技术: 数据采集与处理:需要对海量的用户数据进行采集和处理,包括用户的观看历史、互动行为、…

K-Village NFT 作品集

K-Village 是韩国领先的娱乐公司和 Cube 娱乐公司所拥有的空间,引领了元宇宙行业的发展。在这个虚拟的「韩国村」中,可以参观代表韩国文化的韩国公司和品牌。 此外,这个系列的购买者还将获得特别奖励!如果你刚好拥有 20 个 K-Vill…

不懂Spring IOC?你可能已经OUT了!快来了解它的奥秘!

大家好,我是小米,一个热衷于技术分享的小伙伴。今天,我想和大家聊一聊Spring IoC(Inversion of Control)的理解、原理与实现。对于使用Spring框架的开发者来说,IoC容器是一个非常重要的概念,它帮…

C++ ---- 日期类实现+阅读文档(文档可直接下载)

日期类文档下载(日期类详细介绍) word文档 MyDate/MyDate/日期类阅读文档.docx 张喜阳/进阶代码仓库 - Gitee.comhttps://gitee.com/niuniuzxy/advanced-code-warehouse/blob/a25baeee2bd0f0c64f96315bb0d0023308329d92/MyDate/MyDate/%E6%97%A5%E6%9C%9F%E7%B1%BB%E9%98%85…

十六、Config分布式配置中心

目录 分布式配置中心概述 1、为什么需要分布式配置中心? 2、配置中心的作用: Spring Cloud Config简介 新建项目springcloud-config-server 1、引入配置中心config-server的依赖 2、在github/gitee上新建一个远程仓库作为config的远程配置中心 3、…

3年测试技术面一题都看不懂,字节面试真的变态.....

最近我的一个读者朋友去了字节面试,来给我发信息吐槽,说字节的面试太困难了,像他这种三年经验的测试员,在技术面,居然一题都答不上来,这要多高的水平才能有资格去面试字节的测试岗位。 确实,字…

Vue2+CSS实现一个瀑布流布局案例

在练习代码的时候,看到了携程的首页下方的布局还挺好看 就是一个瀑布流的布局效果,在携程上是一共两列布局,然后每个格子的高度都会根据图片的高度做排布 一开始是想使用flex进行布局,先让每个格子各占百分之49,然后贴…