`

JDBC数据库编程(二) - 建立DAO对象

阅读更多
上次,我们只讲解了JDBC中简单的查询。
任何数据库的操作都包括:增,删,改,查。
今天,我们就来讲一下JDBC中完整地实现这4部分的方法。

为了使代码更加清晰,我们使用了DAO设计模式,就是为
每一个被操作的数据库对象建立一个DAO类,这个DAO类中
包含了被操作对象所应该包含的所有增,删,改,查操作。

首先,我们先建立一个类:CustomerDao
我们先试着在其中加入insert方法,如下:
public void insert(Customer customer)
		throws Exception {
		DbConn conn = null;
		PreparedStatement pstmt = null;
		String sql = "insert into Customers(customerid,city) "
							 + "values(?,?)";
		conn = new DbConn();
		try {
			pstmt = conn.getConnection().prepareStatement(sql);
			pstmt.setString(1, customer.getCustomerId());
			pstmt.setString(2, customer.getCity());
			pstmt.executeUpdate();
			pstmt.close();
			System.out.println("One Customer Inserted Successfully.");
		} catch (RuntimeException e) {
			//e.printStackTrace();
			throw new Exception("Insert Customer Error!");
		} finally {
			conn.close();
		}
	}



我们先看一下Customer表插入前的数据情况:



然后,我们在客户端main方法中测试下该方法:
public void insert(Customer customer)
		throws Exception {
		DbConn conn = null;
		PreparedStatement pstmt = null;
		String sql = "insert into Customers(customerid,city) "
							 + "values(?,?)";
		conn = new DbConn();
		try {
			pstmt = conn.getConnection().prepareStatement(sql);
			pstmt.setString(1, customer.getCustomerId());
			pstmt.setString(2, customer.getCity());
			pstmt.executeUpdate();
			pstmt.close();
			System.out.println("One Customer Inserted Successfully.");
		} catch (RuntimeException e) {
			//e.printStackTrace();
			throw new Exception("Insert Customer Error!");
		} finally {
			conn.close();
		}
	}


我们再来看一下数据库的情况:


可以看到,2条数据已经被成功插入了,而且你可以在控制台看到2条插入成功信息。

在上面代码中我们需要特别提到的是PreparedStatement。
在JDBC中进行数据更新操作时,我们推荐使用PreparedStatement,因为它
可以使用占位符,以便于我们从外部传入参数。


然后,我们一口气把更新,删除,查存全部做了,完整代码如下:
package corejava2.dao;

import java.sql.*;
import corejava2.objects.Customer;
import corejava2.jdbc.DbConn;
import java.util.*;

public class CustomerDao {
	//insert
	public void insert(Customer customer)
		throws Exception {
		DbConn conn = null;
		PreparedStatement pstmt = null;
		String sql = "insert into Customers(customerid,city) "
							 + "values(?,?)";
		conn = new DbConn();
		try {
			pstmt = conn.getConnection().prepareStatement(sql);
			pstmt.setString(1, customer.getCustomerId());
			pstmt.setString(2, customer.getCity());
			pstmt.executeUpdate();
			pstmt.close();
			System.out.println("One Customer Inserted Successfully.");
		} catch (RuntimeException e) {
			//e.printStackTrace();
			throw new Exception("Insert Customer Error!");
		} finally {
			conn.close();
		}
	}
	
	//update
	public void update(Customer customer)
		throws Exception {
		DbConn conn = null;
		PreparedStatement pstmt = null;
		String sql = "update Customers set city = ? "
							 + "where customerid = ?";
		conn = new DbConn();
		try {
			pstmt = conn.getConnection().prepareStatement(sql);
			pstmt.setString(1, customer.getCity());
			pstmt.setString(2, customer.getCustomerId());
			pstmt.executeUpdate();
			pstmt.close();
			System.out.println("One Customer Updated Successfully.");
		} catch (RuntimeException e) {
			//e.printStackTrace();
			throw new Exception("Update Customer Error!");
		} finally {
			conn.close();
		}
	}
	
	//delete
	public void delete(String customerId)
		throws Exception {
		DbConn conn = null;
		PreparedStatement pstmt = null;
		String sql = "delete from Customers where customerid = ?";
		conn = new DbConn();
		try {
			pstmt = conn.getConnection().prepareStatement(sql);
			pstmt.setString(1, customerId);
			pstmt.executeUpdate();
			pstmt.close();
			System.out.println("One Customer Deleted Successfully.");
		} catch (RuntimeException e) {
			//e.printStackTrace();
			throw new Exception("Delete Customer Error!");
		} finally {
			conn.close();
		}
	}
	
	//query all
	public ArrayList queryAll() throws Exception {
		ArrayList list = new ArrayList();
		String sql = "select * from customers";
		DbConn conn = null;
		Statement stmt = null;
		
		conn = new DbConn();
		try {
			stmt = conn.getConnection().createStatement();
			ResultSet rs = stmt.executeQuery(sql);
			while (rs.next()) {
				Customer customer = new Customer(rs.getString("customerid"),rs.getString("city"));
				list.add(customer);
			}
			rs.close();
			stmt.close();
		} catch (RuntimeException e) {
			//e.printStackTrace();
			throw new Exception("Query All Customers Error!");
		} finally {
			conn.close();
		}
		
		return list;
	}
}


然后,我们做个Util类用于显示Customers:
package corejava2.util;

import java.util.*;
import corejava2.objects.Customer;

public class CustomerUtil {
	public static void showCustomers(ArrayList list) {
		Iterator it = list.iterator();
		while (it.hasNext()) {
			Customer customer = (Customer)it.next();
			System.out.println(customer);
		}
	}
}


客户端代码:
package corejava2.jdbc;

import corejava2.dao.CustomerDao;
import corejava2.objects.Customer;
import corejava2.util.CustomerUtil;
import java.util.*;

public class JdbcDemo {
	public static void main(String[]args) 
		throws Exception {
		Customer customer = null;
		CustomerDao cusDao = new CustomerDao();
		
		//insert 2 customers
		customer = new Customer("SH001","Shanghai");
		cusDao.insert(customer);
		customer = new Customer("TK001","Tokyo");
		cusDao.insert(customer);
		
		//update customer city by id
		customer = new Customer("TK001","Osaka");
		cusDao.update(customer);
		
		//delete customer by id
		cusDao.delete("TK001");
		
		//query all customers
		ArrayList customers = cusDao.queryAll();
		CustomerUtil.showCustomers(customers);
	}
}


运行结果:
Id: SH001 , City: Shanghai
Id: FISSA , City: Madrid
Id: FRNDO , City: Madrid
Id: KRLOS , City: Madrid
Id: MRPHS , City: Zion
  • 大小: 1.8 KB
  • 大小: 2.2 KB
分享到:
评论

相关推荐

    第24讲 JDBC编程4-DAO.ppt

    在第24讲中,我们探讨了JDBC编程中的DAO(Data Access Object)模式,这是一种常用的数据访问策略,用于封装数据库操作,以实现业务逻辑与数据存储的解耦。 **数据访问对象(DAO)**是数据库操作的核心组件,它提供...

    JAVA实验报告四数据库编程.docx

    实验报告的主题是“JAVA实验报告四数据库编程”,主要目的是让学生掌握基本的数据库管理系统(DBMS)使用、理解Java数据库连接(JDBC)的概念,并通过JDBC-ODBC桥接技术来开发实际的数据库系统。实验内容包括设计和...

    使用Java实现数据库编程-课程总复习-(第九章-开发简单的CMS)

    通过这个上机作业,你不仅可以掌握Dao模式,还能熟悉JDBC的使用,了解数据库编程的基本流程。同时,对于开发CMS这样的实际项目,你将学习到如何组织代码结构,如何设计API接口,以及如何处理并发和安全性问题。这些...

    商业编程-源码-魔法单词记忆——DAO访问ACCESS数据库.zip

    在本资源中,我们主要探讨的是如何利用编程技术,特别是DAO(Data Access Objects)模式来访问和操作Microsoft Access数据库。DAO是一种设计模式,它在软件工程中被广泛应用于数据库访问层,以提供一种抽象的方式与...

    spring-jdbc-dao

    Spring JDBC DAO(Data Access Object)模式是Spring提供的一种数据库访问机制,旨在简化传统的JDBC编程,使数据库操作更加便捷、可控。 一、Spring JDBC基础 1. JDBC简介:JDBC(Java Database Connectivity)是...

    第24讲 JDBC编程3-DBCP.ppt

    【JDBC编程3-DBCP】讲解的是在Java应用程序中如何使用数据库连接池(Database Connection Pool,DBCP)来高效管理数据库连接。JDBC(Java Database Connectivity)是Java语言访问数据库的标准API,而DBCP是Apache...

    数据库课程设计-工程项目管理(功能简单适合新手)

    每个实体都可以转化为数据库中的一个表,表之间的关系可以通过外键来建立,例如,一个项目可能有多个负责人,这种一对多的关系可以在数据库设计中体现出来。这将涉及到数据库设计的范式理论,如第一范式(1NF)、第...

    JDBC-database-access.rar_DAO JDBC_jdbc PostgreSQL_postgresql jdb

    在"java编程技术-JDBC数据库访问.ppt"这个文件中,可能详细阐述了上述概念的实例和步骤,包括如何配置数据库连接,如何编写DAO类,如何使用预处理语句执行SQL,以及如何管理和关闭数据库资源等。 总的来说,这个...

    Java语言SQL接口 JDBC编程技术

    Java语言SQL接口JDBC编程技术是Java开发人员与关系型数据库进行交互的重要工具。JDBC(Java Database Connectivity)是Java平台中的一个标准API,它允许Java应用程序与各种类型的数据库进行通信,无论数据库管理系统...

    数据库dao操作jdbc

    数据库DAO(Data Access Object)操作是Java编程中用于与数据库交互的一种常见模式。DAO层的主要目的是将业务逻辑和数据访问代码分离,使得应用程序能够独立于特定的数据库管理系统,提高代码的可重用性和可测试性。...

    使用JDBC操作数据库

    在Java编程领域,JDBC(Java Database Connectivity)是连接Java应用程序和各种数据库的重要接口。它允许程序员通过编写Java代码来执行SQL语句,实现对数据库的读写操作。本篇文章将详细阐述如何使用JDBC来操作...

    数据库访问接口-PPT课件.ppt

    DAO(Data Access Object)是一种面向对象的数据库访问模式,使用DAO对象可以简化数据库访问的复杂度,提高开发效率。 数据库访问接口是数据库应用程序开发的基础,了解这些接口的特点和应用场景,对于开发者来说是...

    JSP数据库编程指南JSP数据库

    综上所述,JSP数据库编程涉及JDBC的使用、数据库连接管理、SQL语句的执行以及数据展示。通过学习和实践,你可以创建出高效、安全的Web应用程序,实现与各种数据库的交互。"JSP数据库编程指南"将提供更详细的步骤和...

    计算机软件-商业源码-实例124-利用DAO创建数据库.zip

    在Java或类似的面向对象语言中,DAO通常是一个接口,定义了一系列对数据库进行操作的方法,如添加、删除、更新和查询记录。这些方法由具体的实现类处理,它们与特定的数据库系统(如MySQL、Oracle或SQL Server)进行...

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

    在“Accp8.0\S2\使用Java实现数据库编程 第八章”这一主题中,我们聚焦于如何利用Java这门强大的开发语言进行数据库交互。Java数据库编程是后端开发中的核心技能,它使得应用程序能够有效地存储、检索和管理数据。本...

    【IT十八掌徐培成】Java基础第23天-01.作业和JDBC-dao - 副本.zip

    2. **JDBC(Java Database Connectivity)**:JDBC是Java中用于连接数据库的标准API,它提供了一套接口和类来建立、管理和关闭数据库连接,执行SQL语句,并处理结果集。了解JDBC的基础知识包括加载驱动、创建连接、...

    JSP数据库编程指南

    **JSP数据库编程指南** 在Web开发领域,JavaServer Pages(JSP)是广泛用于创建动态网页的技术之一。它允许开发者将HTML代码与Java代码相结合,以实现服务器端的业务逻辑处理。当涉及到数据库交互时,JSP可以利用...

    高级DAO编程技巧--软件工程师

    ### 高级DAO编程技巧详解 #### 一、引言 在现代软件开发中,特别是J2EE领域,数据访问对象(Data Access Object, DAO)的设计模式被广泛应用于分离低级别的数据访问逻辑与高级别的业务逻辑。通过这种方式,开发者...

    数据库课程设计-飞机订票系统.doc

    - Dao包通过JDBC(Java数据库连接)连接数据库,包括加载JDBC驱动、提供连接URL和创建数据库连接。 ### 7. 界面设计 这部分未详述,通常涉及用户友好的图形界面,便于旅客和管理员操作。 ### 8. 结束语 项目实施...

Global site tag (gtag.js) - Google Analytics