`

Java学习系列(十九)Java面向对象之数据库编程

 
阅读更多

JDBC(Java Data Base Connectivity:java数据库连接):它定义了一组标准的操作数据库的接口,既然是接口,那它就是一种规范,是Java操作数据库的技术规范。

Java数据库编程有两步常用操作

1.加载(或注册)JDBC驱动程序
Class.forName(“com.mysql.jdbc.Driver”); 推荐这种方式,不会对具体的驱动类产生依赖。
DriverManager.registerDriver(com.mysql.jdbc.Driver); 会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。

2.建立数据库Connection
Connection conn = DriverManager.getConnection(url, user, password);DriverManager是一个驱动管理器,内部有一个驱动注册表(Map结构),可以向其注册多个JDBC驱动。

举例说明1:

 

/**
 * @author lhy
 * @description 数据库工具类
 */
public class DBUtil {
	// 创建连接
	public static Connection createConn() {
		Connection conn = null;
		try {
			// 加载驱动程序
			Class.forName("com.mysql.jdbc.Driver");
			// 获取连接(这里用户名为root,密码为空)
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/test", "root", "");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}

	// 创建回话,获取预处理语句(可以防止sql语句注入)
	public static PreparedStatement prepare(Connection conn, String sql) {
		PreparedStatement ps = null;
		try {
			ps = conn.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return ps;
	}

	// 关闭连接
	public static void close(Connection conn) {
		if (conn != null) {
			try {
				conn.close();
				conn = null;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	// 关闭回话
	public static void close(Statement st) {
		if (st != null) {
			try {
				st.close();
				st = null;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	// 关闭查询结果集
	public static void close(ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
				rs = null;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

 

下面用户表为例,调用Statement对象的executeQuery()方法或executeUpdate()方法,让DBMS 执行具体的SQL语句,以便对数据执行查询、增、删、改等操作;
我们先建好一张用户表(user,数据库为test)

创建实体类(User):

 

public class User {
	private int id;
	private String username;
	private String password;

	public User() {
	}

	public User(int id, String username, String password) {
		this.id = id;
		this.username = username;
		this.password = password;
	}

	public int getId() {
		return id;
	}

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

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", password=" + password + ", username="
				+ username + "]";
	}

}
/**
 * @author lhy
 * @description 对用户的CRUD相关操作
 */
public class UserDao {
	// 添加用户
	public void add(User u) {
		Connection conn = DBUtil.createConn();
		String sql = "insert into user values(null,?,?)";
		PreparedStatement ps = DBUtil.prepare(conn, sql);
		try {
			ps.setString(1, u.getUsername());
			ps.setString(2, u.getPassword());
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		DBUtil.close(ps);
		DBUtil.close(conn);
	}

	// 根据Id删除用户
	public void deleteById(int id) {
		Connection conn = DBUtil.createConn();
		String sql = "delete from user where id=?";
		PreparedStatement ps = DBUtil.prepare(conn, sql);
		try {
			ps.setInt(1, id);
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		DBUtil.close(ps);
		DBUtil.close(conn);
	}

	// 删除用户
	public void delete(User u) {
		deleteById(u.getId());
	}

	// 更新用户
	public void update(User u) {
		Connection conn = DBUtil.createConn();
		String sql = "update user set username=?,password=? where id=?";
		PreparedStatement ps = DBUtil.prepare(conn, sql);
		try {
			ps.setString(1, u.getUsername());
			ps.setString(2, u.getPassword());
			ps.setInt(3, u.getId());
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		DBUtil.close(ps);
		DBUtil.close(conn);
	}

	// 根据查询用户
	public User loadById(int id) {
		Connection conn = DBUtil.createConn();
		String sql = "select * from user where id=?";
		PreparedStatement ps = DBUtil.prepare(conn, sql);
		User user = null;
		ResultSet rs = null;
		try {
			ps.setInt(1, id);
			rs = ps.executeQuery();
			if (rs.next()) {
				user = new User();
				user.setId(rs.getInt("Id"));
				user.setUsername(rs.getString("username"));
				user.setPassword(rs.getString("password"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		DBUtil.close(rs);
		DBUtil.close(ps);
		DBUtil.close(conn);
		return user;
	}

	// 查询所有用户信息
	public List<User> listUser() {
		Connection conn = DBUtil.createConn();
		String sql = "select * from user";
		PreparedStatement ps = DBUtil.prepare(conn, sql);
		List<User> list = new ArrayList<User>();
		ResultSet rs = null;
		try {
			rs = ps.executeQuery();
			while (rs.next()) {
				User user = new User();
				user.setId(rs.getInt("Id"));
				user.setUsername(rs.getString("username"));
				user.setPassword(rs.getString("password"));
				list.add(user);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		DBUtil.close(rs);
		DBUtil.close(ps);
		DBUtil.close(conn);
		return list;
	}
}

客户端(测试类):

 

 

public class TestUser {
	public static void main(String[] args) {
		User user = new User();
		user.setUsername("张三");
		user.setPassword("123");
		UserDao userDao = new UserDao();
		// userDao.add(user);//添加用户
		// userDao.deleteById(1);// 删除Id为1的用户
		// userDao.update(new User(2, "李四", "1234546"));// 更新Id为2的用户信息
		// System.out.println(userDao.loadById(2)); // 查询Id为2的用户信息
		// 列出所有的用户
		List<User> list = userDao.listUser();
		for (User u : list) {
			System.out.println(u);
		}
	}
}

 

Java的数据库编程比较简单,这里就不再赘述。
结束语
Javase基础部分就到这了,之后会更新 Java的反射、注解、代理、设计模式、jsp、Struts、Hibernate、Spring等内容。微笑相信学完了Javase基础之后,对后面的学习会更加轻松。

 

 

分享到:
评论

相关推荐

    Java面向对象精髓编程

    学习Java面向对象编程,需要不断地实践和探索。通过编写实际的项目,将理论知识与实际应用相结合,可以更好地理解和掌握这些概念。随着技能的提升,你将能够利用Java的强大功能解决复杂的问题,开发出高效、稳定的...

    面向对象编程:C++与Java比较教程 英文版

    本书《面向对象编程:C++与Java比较教程》详细比较和对比了当今最流行的两种编程语言C++和Java,旨在教授互联网时代至关重要的技能和面向对象编程技术。作者Avinash C. Kak凭借其成功教授的课程,撰写了一本全面的...

    S2使用Java实现数据库编程

    在IT行业中,数据库编程是至关重要的技能之一,尤其是在Java开发领域。本教程将重点讨论如何使用Java语言来实现对MySQL数据库的编程操作。通过提供的压缩包"使用Java实现数据库编程-1488176910082",我们可以深入...

    java 面向对象的编程

    在Java编程领域,面向对象...综合以上,Java面向对象编程与数据库设计结合,可以构建出强大的企业级应用。通过理解和掌握这些知识点,开发者能更好地设计和实现数据驱动的Java应用程序,有效地管理和操作后端数据库。

    JAVA面向对象程序设计(期末考试试题及答案)

    本文总结了 JAVA面向对象程序设计的知识点,涵盖了 Java 语言的基本语法、面向对象编程的概念、异常处理、多线程编程、网络编程、数据库编程等方面的知识,为学习和掌握 Java 语言提供了有价值的参考。

    精通Java:JDK、数据库系统开发Web开发(实例代码)

    第5章 Java面向对象程序设计(上) 第6章 Java面向对象程序设计(下) 第7章 Java异常处理机制 第8章 Java反射机制 第9章 数据结构与集合类 第3篇 图形用户界面 第10章 Java Swing(上) 第11章 Java Swing(下) 第...

    Java数据库编程宝典

    8. Spring JDBC与JPA:在Spring框架中,Spring JDBC提供了一种简化JDBC使用的抽象层,而Java Persistence API (JPA)结合Hibernate等实现,提供了面向对象的数据库编程方式。 9. 数据库优化:包括SQL查询优化、索引...

    S2北大青鸟 使用Java实现数据库编程(包含项目).zip

    在本压缩包“S2北大青鸟 使用Java实现数据库编程(包含项目).zip”中,主要涵盖的是S2学期的学习内容,重点在于讲解如何使用Java语言进行数据库编程。这一主题对于计算机科学的学生和开发者至关重要,因为Java是广泛...

    《Java数据库编程宝典》

    尽管文档中的大部分内容与一个特定的学习群及其提供的资源有关,但基于这些信息,我们可以围绕“Java数据库编程”这一主题进行展开,提炼出一系列有价值的知识点。 ### Java数据库编程宝典 #### 一、Java与数据库...

    java 数据库编程.pdf

    由于没有实际的内容文本可以分析,我将基于提供的标题和描述,即"java 数据库编程.pdf",来生成相关知识点。请注意,我将尝试构建一个内容丰富且符合您要求的知识点说明,但会缺少实际文档内容的精确信息。 Java...

    Java面向对象软件开发

    1-面向对象软件开发概述;2-Java语言概述;3-java语言基础;4-面向对象程序设计1;5-面向对象程序设计2;6-工具类与算法;7-图形用户界面设计与实现;8-Java高级编程1(异常处理...9-Java数据库编程接口;10-Java开发环境与工具

    Java面向对象程序设计(第3版)-PPT课件

    《Java面向对象程序设计(第3版)》是人民邮电出版社出版的一部经典教材,由杨晓燕和李选平两位专家共同编著。...在学习过程中,配合书籍和实践,能够更好地理解和掌握Java面向对象编程的设计思想和技巧。

    Java基础语法+面向对象编程+Java集合框架+异常处理与调试+Java多线程编程+Java网络编程+Java数据库等全套教程

    面向对象编程 Java集合框架 异常处理与调试 Java多线程编程 Java网络编程 Java数据库连接(JDBC) Java标准类库 Java虚拟机(JVM)原理 Java泛型与反射 Java注解与元数据 Java高级特性:Lambda表达式 Java高级特性:...

    使用Java实现面向对象编程.rar

    本教程通过一系列的上机实践,旨在帮助你掌握Java面向对象编程的基础知识,包括类、对象、继承、接口、封装,以及如何使用JDBC进行数据库操作。通过学习这些内容,你可以为构建高效、可维护的Java应用程序打下坚实的...

    java-sql教学管理系统(面向对象)

    总的来说,"java-sql教学管理系统(面向对象)"是一个综合运用了Java编程和SQL数据库技术的项目,通过面向对象的方式实现了教学管理的各个功能,为教育机构提供了一种高效、便捷的管理工具。理解和掌握这个系统涉及的...

    《Java面向对象程序设计(第2版)》课件

    第二版的《Java面向对象程序设计》课件旨在深入浅出地介绍这一关键概念,帮助学习者掌握Java语言的基础以及面向对象编程的核心思想。下面将详细阐述Java面向对象编程的基本概念、特性及其在实际开发中的应用。 1. ...

    JAVA数据库编程实例随书源码

    这个"JAVA数据库编程实例随书源码"提供了一系列的示例代码,可以帮助学习者深入理解如何在Java环境中与数据库进行交互。这些章节实例覆盖了数据库连接、SQL操作、事务处理、数据查询和更新等多个关键领域。 首先,...

    java数据库编程

    Java数据库编程是软件开发中的重要组成部分,特别是在企业级应用中,数据存储和处理通常是核心功能。本主题将深入探讨Java如何与各种类型的数据库进行交互,包括基础概念、核心技术以及实战示例。 首先,我们需要...

    Accp8.0\S2\使用Java实现数据库编程 第八章

    本章内容包括了理论讲解、实践案例以及相关的学习资源,如授课资料、上机练习和课后作业,旨在帮助学习者全面掌握Java数据库编程。 首先,我们需要了解Java中的JDBC(Java Database Connectivity),它是Java与各种...

Global site tag (gtag.js) - Google Analytics