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


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

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

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语句的执行结果

⑤关闭建立的对象,释放资源

综合实例

java 复制代码
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();
			}
		}
	}

}
java 复制代码
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 + "]";
	}

}
java 复制代码
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);

	}
}

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

相关推荐
奶糖趣多多几秒前
Redis知识点
数据库·redis·缓存
阿伟*rui几秒前
配置管理,雪崩问题分析,sentinel的使用
java·spring boot·sentinel
CoderIsArt1 小时前
Redis的三种模式:主从模式,哨兵与集群模式
数据库·redis·缓存
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck2 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei2 小时前
java的类加载机制的学习
java·学习
师太,答应老衲吧3 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
Yaml44 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~4 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616884 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端