Java语言程序设计——篇十六

news2024/11/26 0:37:30

在这里插入图片描述
在这里插入图片描述

       🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿

  • 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳🌳
    您的点赞👍、关注➕、收藏⭐️、评论📝、私信📧是我最大的支持与鼓舞!!!🌻🌻🌻

在这里插入图片描述

JDBC数据库编程

  • 数据库系统简介
    • 关系数据库简述
    • 数据库语言SQL
  • MySQL数据库
    • MySQL的下载与安装
    • 使用Navicat操作数据库
  • JDBC体系结构
    • JDBC访问数据库
    • 数据库访问步骤
      • 综合实例

数据库系统简介

  • 数据库系统(Database System,简称DBS) 是由数据库及其管理软件组成的系统。它是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统,也是一个为实际可运行的存储、维护和应用系统提供数据的软件系统。数据库系统由数据库、数据库管理系统(DBMS)、应用系统、数据库管理员和用户构成,其中DBMS是数据库系统的核心和基础。数据库系统的主要特点是数据的独立性、共享性、冗余度低以及易于维护等。

关系数据库简述

  • 关系数据库是建立在关系数据库模型基础上的数据库,它借助于集合代数等概念和方法来处理数据库中的数据。关系数据库将数据组织成一组拥有正式描述性的表格,这些表格中的数据能以许多不同的方式被存取或重新召集,而无需重新组织数据库表格。关系数据库的核心是关系模型,每个表格(关系)包含用列表示的一个或多个数据种类,每行包含一个唯一的数据实体。关系数据库具有容易扩充、理论基础坚实等优点,是当前数据库应用的主流。

数据库语言SQL

  • SQL(Structured Query Language)是一种特殊目的的编程语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL是数据库脚本文件的扩展名,也是关系式数据库管理系统的标准语言。SQL语言包括数据查询语言(DQL)、数据操作语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)四类。SQL语言功能强大、效率高,且简单易学易维护,是数据库管理和开发人员必须掌握的工具。

MySQL数据库

  • MySQL是一个流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,后归属于Oracle公司。MySQL将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这增加了速度并提高了灵活性。MySQL使用SQL语言进行数据库操作,支持多种操作系统和编程语言,具有体积小、速度快、总体拥有成本低等优点。MySQL广泛应用于WEB应用、中小型网站和企业的数据库解决方案中。

MySQL的下载与安装

  • 可以到Oracle供词官方网站下载最新的MySQL软件,MySQL提供Windows下的安装程序MySQL的下载地址

使用Navicat操作数据库

  • Navicat是一款强大的数据库管理和开发工具,支持包括MySQL在内的多种数据库系统。使用Navicat操作MySQL数据库,用户可以轻松创建、编辑和删除数据库对象,运行SQL查询和脚本,以及进行数据导入导出等操作。Navicat提供了直观的图形用户界面和丰富的功能选项,使得数据库管理和开发工作变得更加高效和便捷。

JDBC体系结构

  • JDBC(Java Database Connectivity)是Java编程语言中用来连接数据库的一种API。JDBC体系结构主要由两层组成:JDBC API和JDBC Driver API。JDBC API提供了应用程序对JDBC的管理连接,而JDBC Driver API则支持JDBC管理到数据库驱动程序的连接。JDBC使用驱动程序管理器和数据库特定的驱动程序来提供透明的连接到异构数据库。JDBC API允许Java应用程序执行SQL语句、处理结果集以及控制数据库事务等操作。通过使用JDBC,Java应用程序可以轻松地与各种数据库进行交互。
    JDBC基本功能如下:
    (1)建立数据库的连接
    (2)发送SQL语句
    (3)处理数据库操作结果

JDBC访问数据库

在这里插入图片描述

数据库访问步骤

使用JDBC API 连接和访问数据库,一般分为一下5个步骤:
①加载驱动程序。
②建立连接对象
③创建语句对象
④获取SQL语句的执行结果
⑤关闭建立的对象,释放资源

综合实例

package com.web.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Driver;

public class DBConn {
	// 加载驱动类
	private static String driver = "com.mysql.jdbc.Driver";
	// 获取链接localhost
	private static String url = "jdbc:mysql://localhost:3306/students";

	public static Connection getConnection() {
		Connection conn = null;
		// 加载驱动;
		try {
			Class.forName(driver);
			// 获取连接
			conn = DriverManager.getConnection(url, "root", "7508368");
			System.out.println("连接成功");
		} catch (ClassNotFoundException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;

	}

	// 关闭连接
	public static void closeAll(ResultSet rs, PreparedStatement ps, Connection conn) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
		try {
			if (ps != null) {
				ps.close();
			}
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

package com.web.entity;

public class Students {
	private int id;
	private String name;
	private String sex;
	private int age;
	private String birthday;
	private String address;

	public Students() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Students(int id, String name, String sex, int age, String birthday, String address) {
		super();
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.birthday = birthday;
		this.address = address;
	}

	public Students(String name, String sex, int age, String birthday, String address) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.birthday = birthday;
		this.address = address;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getBirthday() {
		return birthday;
	}

	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "Students [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + ", birthday=" + birthday
				+ ", address=" + address + "]";
	}

}

package com.web.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.omg.CORBA.PUBLIC_MEMBER;
import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;

import com.web.entity.Students;
import com.web.util.DBConn;

public class StudentDao {
	private Connection conn = null;
	// 获取sql,执行
	private PreparedStatement ps = null;
	// 结果集,存放数据库中获取的数据
	private ResultSet rs = null;

	public List<Students> selectStuAll() {
		List<Students> list = new ArrayList<Students>();
		// 获取链接
		conn = DBConn.getConnection();
		// 执行sql语句
		String sql = "SELECT * FROM stus";
		// 获取sql执行的对象
		try {
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();// 执行sql
			// 保存数据
			while (rs.next()) {
				Students stus = new Students();
				stus.setId(rs.getInt("id"));
				stus.setName(rs.getString("name"));
				stus.setSex(rs.getString("sex"));
				stus.setAge(rs.getInt("age"));
				stus.setBirthday(rs.getString("birthday"));
				stus.setAddress(rs.getString("address"));
				list.add(stus);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBConn.closeAll(rs, ps, conn);
		}

		return list;
	}

	public Students selectStuById(int id) {
		Students stu = null;
		conn = DBConn.getConnection();

		String sql = "select * from stus where id=?";
		try {
			ps = conn.prepareStatement(sql);
			// 给问号赋值
			ps.setInt(1, id);
			rs = ps.executeQuery();
			while (rs.next()) {
				stu = new Students();
				stu.setId(rs.getInt("id"));
				stu.setName(rs.getString("name"));
				stu.setSex(rs.getString("sex"));
				stu.setAge(rs.getInt("age"));
				stu.setBirthday(rs.getString("birthday"));
				stu.setAddress(rs.getString("address"));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return stu;
	}

	// 添加学生
	public void addStu(Students stu) {
		conn = DBConn.getConnection();
		String sql = "insert into stus(name,sex,age,birthday,address) values(?,?,?,?,?)";
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, stu.getName());
			ps.setString(2, stu.getSex());
			ps.setInt(3, stu.getAge());
			ps.setString(4, stu.getBirthday());
			ps.setString(5, stu.getAddress());
			ps.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBConn.closeAll(rs, ps, conn);
		}

	}

	// 修改学生
	public void updateStu(Students stu) {
		conn = DBConn.getConnection();
		String sql = "update stus set name=?,address=? where id=?";
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, stu.getName());
			ps.setString(2, stu.getAddress());
			ps.setInt(3, stu.getId());
			ps.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBConn.closeAll(rs, ps, conn);
		}

	}

	public void delStu(int id) {
		conn = DBConn.getConnection();
		String sql = "delete from stus where id=?";
		try {
			ps = conn.prepareStatement(sql);
			ps.setInt(1, id);
			ps.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBConn.closeAll(rs, ps, conn);
		}

	}

	public static void main(String[] args) {
		StudentDao dao = new StudentDao();
		// 查询操作
		// List<Students> list = dao.selectStuAll();
		// System.out.println(list);
		Students s = dao.selectStuById(4);
		System.out.println(s);
		// 添加操作
		// Students stu = new Students("小赵", "男", 20, "2004-10-10", "太原市");
		// dao.addStu(stu);
		// System.out.println(s);
		// 修改操作
		// Students s=dao.selectStuById(5);
		// s.setName("李华");
		// s.setAddress("北京市");
		// dao.updateStu(s);
		// 删除操作
		dao.delStu(2);

	}
}

博主用心写,读者点关注,互动传真情,知识不迷路。

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

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

相关文章

ROBOT--空心杯电机是什么

空心杯电机是什么 1. 简介2. 结构3. 主要特点4. 应用场合5. 优点6. 缺点 1. 简介 空心杯电机是一种微型伺服直流电机&#xff0c;由定子和转子两大核心部分组成&#xff0c;通常来讲尺寸一般较小通常不超过40mm。在结构上突破了传统直流电机的结构形式&#xff0c;采用的是无铁…

如何理解递归

在二叉树的题目中&#xff0c;我们难免会用到递归方法&#xff0c;递归思想很简单&#xff0c;但运用起来却因为抽象而难以理解。 理解递归的关键在于认识到它是一种解决问题的方法&#xff0c;允许函数直接或间接地调用自身。以下是对递归的概述以及如何理解它的几个要点&…

【算法】一文带你搞懂完全背包!(附背包问题总结)

理论基础 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。这就是完全背包问题。 完全背包…

【计算机组成原理】三、存储系统:1.存储器的分类、层次化结构、性能指标、基本组成(半导体、存储芯片基本原理)

三、存储系统&#xff08;存储器层次结构&#xff09; 文章目录 三、存储系统&#xff08;存储器层次结构&#xff09;1.存储器的分类1.1按在计算机中的作用&#xff08;层次&#xff09;❗多级存储结构&#xff08;层次化结构&#xff09;1.2按存储介质1.3按存取方式1.4按信息…

uniapp 小程序 设置按钮固定到页面的最下方

解决方案 我们在做小程序的时候&#xff0c;特别是页面是以列表的形式进行展示&#xff0c;并且页面必须还要新增数据时&#xff0c;这是就会在页面的底部加一个固定的新增按钮&#xff0c;点击新增按钮&#xff0c;弹出一个弹窗…然后进行下一步的业务逻辑操作&#xff0c;那…

Answer use of function tool by OpenAI assistant in Python

题意&#xff1a;“在 Python 中使用 OpenAI 助手的函数工具的用途” 问题背景&#xff1a; I am trying to answer to OpenAI assistants function tool. “我正在尝试回答 OpenAI 助手的函数工具。” See my code below. The custom function is called "funnyfunc&qu…

系统编程 网络 基于tcp协议

tcp的客户端&#xff1a; socket&#xff08;&#xff09;&#xff1b;用来开链接的端口 bind&#xff08;&#xff09;&#xff1b;绑定作用&#xff08;在客户端可选可不选&#xff09; connect&#xff08;&#xff09;&#xff1b;链接作用 tcp的服务端&#xff1a; s…

性能测试全解

世界上没有陌生人&#xff0c;只有还没认识的朋友 一&#xff0e;性能测试的意义 由于软件系统的性能问题而引起严重后果的事件比比皆是&#xff0c;下面列举几个案例 (1)2007年10月&#xff0c;北京奥组委实行2008年奥运会门票预售&#xff0c;一时间订票官网访问量激致系统…

「知识篇」UWB精确测距与定位技术优势的详细探讨

UWB650模块是思为无线新发布的一款双边双向测距&#xff0c;三点平面定位模块&#xff0c;WB650模块是在UWB3000F27基础上研发&#xff0c;并搭载单片机&#xff0c;用户无需配置可直接使用。 遵循IEEE 802.15.4-2020标准的UWB技术及其通信协议&#xff0c;提供高精度、低功耗…

第12章 网络 (1)

目录 12.1 互联的计算机 12.2 ISO/OSI 和TCP/IP 参考模型 12.3 通过套接字通信 12.3.1 创建套接字 12.3.2 使用套接字 12.3.3 UDP套接字 12.4 网络实现的分层模型 本专栏文章将有70篇左右&#xff0c;欢迎关注&#xff0c;查看后续文章。 网络相关的头文件数目巨大&…

两台电脑之间记事本内容如何转移?

记事本是我们日常生活中不可或缺的工具&#xff0c;它轻便、简单&#xff0c;方便我们随时记录生活中的点滴、工作中的灵感或重要的事务。比如&#xff0c;在会议中快速记下关键点&#xff0c;或者在阅读时捕捉一闪而过的想法。然而&#xff0c;随着数字化生活的推进&#xff0…

重塑“我店”平台:绿色积分引领的数字消费新纪元

在数字化转型的洪流中&#xff0c;“我店”平台凭借其创新的绿色积分体系异军突起&#xff0c;成为市场中的璀璨新星。本文将深度剖析“我店”的运营模式、市场效应及其如何通过绿色积分机制开创消费新潮流。 一、崛起之路与市场震撼力 自2021年盛夏在上海启航以来&#xff0c…

研讨会邀请函-Parasoft TÜV Rheinland|SOA架构下符合功能安全要求的软件自动化测试解决方案

尊敬的技术先锋&#xff0c; 在汽车行业的数字化转型浪潮中&#xff0c;软件安全已成为我们共同关注的焦点。Parasoft 联合 TV Rheinland&#xff0c;荣幸地邀请您参与我们即将举办的专业研讨会&#xff0c;与行业领袖一同探索SOA架构下的功能安全软件开发测试方案。 会议议程…

支付宝小程序websocket长连接(心跳版本)

注意点&#xff1a; 关闭连接一定要把那些开下来的监听全部关闭掉 1.开启连接 /*长连接*/ connectWebSocket() {let that this;my.connectSocket({url: ws://192.xx.8.xx:7780/charger-service-netty/websocket/${uni.getStorageSync(chargePointId)},header: {AccessType: a…

三种相机模型总结(针孔、鱼眼、全景)

相机标定 文章目录 相机标定前言 前言 我们最常见的投影模型Perspective Projection Model描述的就是针孔相机的成像原理。从上面的图根据相似三角形可以得出 参考链接 https://zhuanlan.zhihu.com/p/540969207 相机标定之张正友标定法数学原理详解&#xff08;含python源码&a…

楼宇智慧公厕系统实时卫生状况一目了然

在科技飞速发展的今日&#xff0c;楼宇智慧公厕系统如一颗璀璨的新星&#xff0c;悄然改变着我们的生活。它以先进的技术手段&#xff0c;让公厕的实时卫生状况一目了然&#xff0c;为人们带来了全新的如厕体验。 当我们步入一栋现代化的楼宇&#xff0c;对公厕的期待不再仅仅是…

JVM 内存结构了解吗,每个区域都存放什么数据?

Java 程序是运行在 JVM 之中的&#xff0c;所有对象的创建和分配都在 JVM 中。 内存结构&#xff1a; 方法区&#xff1a;各线程共享&#xff0c;主要存放类信息、常量、静态变量 虚拟机栈&#xff1a;线程私有&#xff0c;主要存放基本数据类型&#xff08;int、char、float……

Blazor开发框架Known-V2.0.9

V2.0.9 Known是基于Blazor的企业级快速开发框架&#xff0c;低代码&#xff0c;跨平台&#xff0c;开箱即用&#xff0c;一处代码&#xff0c;多处运行。本次版本主要是修复一些BUG和表格页面功能增强。 官网&#xff1a;http://known.pumantech.comGitee&#xff1a; https:…

什么是蒙太奇谎言

蒙太奇谎言&#xff0c;可以理解为不表述全部事实&#xff0c;而是进表达部分事实&#xff0c;让听众形成错误的观点。 比如&#xff0c;某X国家队水平很差&#xff0c;从来没进入过世界杯。 可以这样说&#xff1a;世界足球强国巴西&#xff0c;从来没在世界大赛上赢过X国家队…

C++构造数据类型|枚举类型

C构造数据类型|枚举类型 1. 枚举类型1.1 函数重载的定义1.2 枚举类型的声明1.3 例1&#xff1a;1.4 例2&#xff1a; 2. 枚举类型的定义说明3. 枚举类型的使用3.1 枚举变量的赋值3.2 枚举变量的运算3.3 枚举变量的输入3.4 注意事项 4 示例代码 1. 枚举类型 1.1 函数重载的定义…