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的强大功能解决复杂的问题,开发出高效、稳定的...
本书《面向对象编程:C++与Java比较教程》详细比较和对比了当今最流行的两种编程语言C++和Java,旨在教授互联网时代至关重要的技能和面向对象编程技术。作者Avinash C. Kak凭借其成功教授的课程,撰写了一本全面的...
在IT行业中,数据库编程是至关重要的技能之一,尤其是在Java开发领域。本教程将重点讨论如何使用Java语言来实现对MySQL数据库的编程操作。通过提供的压缩包"使用Java实现数据库编程-1488176910082",我们可以深入...
在Java编程领域,面向对象...综合以上,Java面向对象编程与数据库设计结合,可以构建出强大的企业级应用。通过理解和掌握这些知识点,开发者能更好地设计和实现数据驱动的Java应用程序,有效地管理和操作后端数据库。
本文总结了 JAVA面向对象程序设计的知识点,涵盖了 Java 语言的基本语法、面向对象编程的概念、异常处理、多线程编程、网络编程、数据库编程等方面的知识,为学习和掌握 Java 语言提供了有价值的参考。
第5章 Java面向对象程序设计(上) 第6章 Java面向对象程序设计(下) 第7章 Java异常处理机制 第8章 Java反射机制 第9章 数据结构与集合类 第3篇 图形用户界面 第10章 Java Swing(上) 第11章 Java Swing(下) 第...
8. Spring JDBC与JPA:在Spring框架中,Spring JDBC提供了一种简化JDBC使用的抽象层,而Java Persistence API (JPA)结合Hibernate等实现,提供了面向对象的数据库编程方式。 9. 数据库优化:包括SQL查询优化、索引...
在本压缩包“S2北大青鸟 使用Java实现数据库编程(包含项目).zip”中,主要涵盖的是S2学期的学习内容,重点在于讲解如何使用Java语言进行数据库编程。这一主题对于计算机科学的学生和开发者至关重要,因为Java是广泛...
尽管文档中的大部分内容与一个特定的学习群及其提供的资源有关,但基于这些信息,我们可以围绕“Java数据库编程”这一主题进行展开,提炼出一系列有价值的知识点。 ### Java数据库编程宝典 #### 一、Java与数据库...
由于没有实际的内容文本可以分析,我将基于提供的标题和描述,即"java 数据库编程.pdf",来生成相关知识点。请注意,我将尝试构建一个内容丰富且符合您要求的知识点说明,但会缺少实际文档内容的精确信息。 Java...
1-面向对象软件开发概述;2-Java语言概述;3-java语言基础;4-面向对象程序设计1;5-面向对象程序设计2;6-工具类与算法;7-图形用户界面设计与实现;8-Java高级编程1(异常处理...9-Java数据库编程接口;10-Java开发环境与工具
《Java面向对象程序设计(第3版)》是人民邮电出版社出版的一部经典教材,由杨晓燕和李选平两位专家共同编著。...在学习过程中,配合书籍和实践,能够更好地理解和掌握Java面向对象编程的设计思想和技巧。
面向对象编程 Java集合框架 异常处理与调试 Java多线程编程 Java网络编程 Java数据库连接(JDBC) Java标准类库 Java虚拟机(JVM)原理 Java泛型与反射 Java注解与元数据 Java高级特性:Lambda表达式 Java高级特性:...
本教程通过一系列的上机实践,旨在帮助你掌握Java面向对象编程的基础知识,包括类、对象、继承、接口、封装,以及如何使用JDBC进行数据库操作。通过学习这些内容,你可以为构建高效、可维护的Java应用程序打下坚实的...
总的来说,"java-sql教学管理系统(面向对象)"是一个综合运用了Java编程和SQL数据库技术的项目,通过面向对象的方式实现了教学管理的各个功能,为教育机构提供了一种高效、便捷的管理工具。理解和掌握这个系统涉及的...
第二版的《Java面向对象程序设计》课件旨在深入浅出地介绍这一关键概念,帮助学习者掌握Java语言的基础以及面向对象编程的核心思想。下面将详细阐述Java面向对象编程的基本概念、特性及其在实际开发中的应用。 1. ...
这个"JAVA数据库编程实例随书源码"提供了一系列的示例代码,可以帮助学习者深入理解如何在Java环境中与数据库进行交互。这些章节实例覆盖了数据库连接、SQL操作、事务处理、数据查询和更新等多个关键领域。 首先,...
Java数据库编程是软件开发中的重要组成部分,特别是在企业级应用中,数据存储和处理通常是核心功能。本主题将深入探讨Java如何与各种类型的数据库进行交互,包括基础概念、核心技术以及实战示例。 首先,我们需要...
本章内容包括了理论讲解、实践案例以及相关的学习资源,如授课资料、上机练习和课后作业,旨在帮助学习者全面掌握Java数据库编程。 首先,我们需要了解Java中的JDBC(Java Database Connectivity),它是Java与各种...