`

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:JDK、数据库系统开发Web开发(实例代码)

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

    Java面向对象软件开发

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

    java 面向对象的编程

    第1章 数据库设计 设计符合规范的数据库 使用MySQL数据库存储数据 使用JDBC技术操作后台数据库

    面向对象程序设计实验报告-JAVA

    实验三 类、对象和包 实验四、异常处理  1.运行下面的程序,理解异常的抛出、捕捉与处理。 实验五、 GUI标准组件及事件处理  1.编程包含一个标签和一个按钮,单击按钮时,标签的内容在"你好"和"再见"之间切换。 ...

    java面向对象程序设计习题集

    第六章 面向对象程序设计 97 一、选择题 97 二、填空题 118 三、判断题 120 四、编程题 123 第七章 数据库的连接 129 一、选择题 129 二、填空题 131 三、判断题 131 四、编程题 131 第八章 多线程 133 一、填空题 ...

    猎头java技术型。熟练掌握JAVA面向对象编程语言

    熟练掌握JAVA面向对象编程语言,有良好的编码习惯 熟悉常用的JavaAPI,包括多线程、IO、Socket、JDBC、XML、反射等 熟练使用HTML、CSS、JavaScript、JQuery,并了解Ajax 熟练使用JSP、Servlet、javaBean进行web应用...

    accp7.0 s2 java面向对象编程第十一章案例

    北大青鸟accp7.0 s2 java面向对象编程第十一章案例

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

    1至10章上机,示例代码,答案。使用Java实现数据库编程,ACCP8.0课件

    java学习笔记

    java面向对象编程--数据库编程--&gt;java se java 基础2 html--css--javascript--&gt;div+css java ee中级部分 Servlet--Jsp--&gt;mvc模式 java ee高级部分 Struts--Ejb--Hibernate--Spring--Ajax(ext,dw2)--&gt;...

    完整版 Java编程基础入门教程 Java语言程序设计 第3章_面向对象程序设计基础(共16页).ppt

    完整版 Java编程基础入门教程 Java语言程序设计 第3章_面向对象程序设计基础(共16页).ppt 完整版 Java编程基础入门教程 Java语言程序设计 第4章_类与对象(共59页).ppt 完整版 Java编程基础入门教程 Java语言程序...

    完整版 Java编程基础入门教程 Java语言程序设计 第1章_java概述(共50页).ppt

    完整版 Java编程基础入门教程 Java语言程序设计 第3章_面向对象程序设计基础(共16页).ppt 完整版 Java编程基础入门教程 Java语言程序设计 第4章_类与对象(共59页).ppt 完整版 Java编程基础入门教程 Java语言程序...

    java核心技术:面向对象编程电子版第三卷

    java核心技术:面向对象编程电子版第三卷

    Java实验八_数据库_艾孜尔江·艾尔斯兰著.zip

    本资源主要讲述了Java语言并通过实验的形式阐明了Java语言数据库接口的使用,由于艾孜尔江亲自执笔...Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

    第一章JAVA面向对象的程序设计.doc

    8: JAVA深入(JDBC数据库编程,java.serverlet.* java.http.*等基于网络的编程JSP) 五:主要参考书: 1:深入浅出java语言程序设计 中国青年出版 2:JAVA程序设计教程( java How to Program Third Edition) 3: ...

    java经典编程300例

    《Java学习路线图•Java经典编程300例》内容包括java语言概述、eclipse开发工具、java语言基础、流程控制、数组及其常用操作、面向对象入门、面向对象进阶、字符串与包装类、java集合类框架、常用数学工具类、错误...

    Java实验8 数据库.doc

    本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java...

    JAVA经典编程300例

    《Java学习路线图•Java经典编程300例》内容包括java语言概述、eclipse开发工具、java语言基础、流程控制、数组及其常用操作、面向对象入门、面向对象进阶、字符串与包装类、java集合类框架、常用数学工具类、错误...

    完整版 Java编程基础入门教程 Java语言程序设计 第11章_数据库的连接(共36页).ppt

    完整版 Java编程基础入门教程 Java语言程序设计 第3章_面向对象程序设计基础(共16页).ppt 完整版 Java编程基础入门教程 Java语言程序设计 第4章_类与对象(共59页).ppt 完整版 Java编程基础入门教程 Java语言程序...

    面向对象程序设计-Java(张白一)

    面向对象程序设计-Java(张白一) 第1章 Java系统环境概述 第2章 Java语言基础 第3章 程序流程控制 第4章 类与对象 第5章 消息、继承与多态 第6章 数组 第7章 字符串类 第8章 文字与图形GUI设计 第9章 常用组件GUI设计...

    猜拳游戏(Java程序设计中的面向对象的编程思想和swing以及数据库的应用)

    Java程序设计中的面向对象的编程思想和swing以及数据库的应用

Global site tag (gtag.js) - Google Analytics