`

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
分享到:
评论

相关推荐

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

    实验四数据库编程 1、实验目的: (1)掌握基本的DBMS的使用 (2)理解JDBC的概念 (3)运用JDBC-ODBC桥开发数据库系统 2、基本要求: (1)注意自始至终贯彻课程中所绍程序设计风格,养成良好的编程习惯。 (2)独立完成所布置...

    JDBC-database-access.rar_DAO JDBC_jdbc PostgreSQL_postgresql jdb

    java编程技术-JDBC数据库访问。主要介绍了: PostgreSQL数据库简介 ;Java数据库技术概述;传统的数据库连接方法;使用数据源连接数据库;预处理语句;DAO设计模式介绍。

    JavaSE_9_JDBC编程

    连接数据库,试用Statement借口进行数据库的更新操作,试用ResultSet接口接受查询结果,PreparedStatement,事务处理,封装JDBC操作数据库的工具类,DAO设计模式

    JDBCDemo_DAO.rar

    为了降低耦合性,提出了DAO封装数据库操作的设计模式,本例程实现了利用DAO设计模式,对数据表进行增、删、改、查,可以通过控制台输入数字1,2,3,4,实现对数据库的操作。

    javaee 实验报告 实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用

    实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用 实验二 JSF+JPA实现用户注册 实验三 struts+spring+hibernate框架访问数据库的应用 实验四 使用WebService和EJBean访问数据库的应用

    MFC 数据库编程 odbc

    通常由数据库管理系统(DBMS = DataBase Management System)软件(如Oracle、DB2、SQL Server等)对数据库进行管理,应用程序通过(标准)编程接口(如ODBC/JDBC、DAO/ADO.NET、DOM/SAX等)来访问数据库

    java Servlet 云平台教学系统myeclipse定制开发SQLServer数据库网页模式java编程jdbc源码

    JSP 云平台教学系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助 系统采用serlvet +dao +bean,系统具有完整的源代码和数据库 ,系统主要采用B/S模式开发。开发 环境为TOMCAT7.0,Myeclipse8.5开发...

    DBUtils.java数据库的基础封装操作

    在封装SQL语句之前,我们得知道什么是DAO封装与实体类以及JDBC工具类的封装与连接数据库的具体流程。 封装SQL语句的好处: 封装SQL语句后就可以导包,给其他的工程使用,大大降低开发的强度,减少代码的冗余。...

    nutz-1.b.52.zip

    Nutz, 它是一组轻便小型的框架的集合。 -------------Nutz 可以做什么? Dao -- 针对 JDBC 的薄封装,事务模板,无缓存 ...如果你以前根本没接触过 SSH ,只使用 JDBC 编程, 整个 Nutz 专门为你设计

    JSP 绘本租赁管理系统myeclipse开发mysql数据库bs框架java编程serlvet(MVC)结构jdbc

    JSP 绘本租赁管理系统是一套完善的web设计系统serlvet+dao+bean(MVC模式),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用...

    struts仓库管理系统

    本人做的一个仓库管理系统课程设计,供大家参考。使用struts1.2结合jdbc数据库编程接口,数据操作封装在DAO数据访问对象中。

    trabalho-jdbc:JDBC在Web编程学科中的工作I

    JDBC工作我在IFRS Web编程领域从事JDBC工作。工作定义创建POJO汽车和板块类。 现在,创建相应的DAO类以及这两个类SQL的枚举。 在这些类中,创建GenericDAO接口定义的所有方法。 在DAO类中,处理异常。 在Car和Plate...

    DAO编程模式

    J2EE开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的商务逻辑...我们使用JDBC API连接我们公司的各种数据库平台,并且在整个应用程序中应用了DAO设计模式.下图显示了应用程序和数据源的关系: 通

    jsp、servlet进行增删改查,dao层和service层分开

    采用java语言开发,原生jdbc编程,dao层和service分离,数据库采用oracle,基于servlet,jsp

    Web开发+java+ssh框架

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端...

    MVBANK::red_heart:CRUD + JDBC + IREPORT + DAO + JAVA

    ** DAO:**是使用数据持久性的应用程序的标准,其中使用面向对象的编程语言实现业务规则与数据库访问规则的分离。 注释: 使用测试类(src / test / java)验证CRUD 在lib文件夹中,有一些用于使用Ireport 5.6和...

    Java网络编程 JAVA web开发实例讲解 宠物分类展现web项目 实战讲解 全套PPT课件 共10个章节.rar

    Java网络编程 JAVA web开发实例讲解 宠物分类展现web项目 第03章 数据库准备及JDBC(共40页).ppt Java网络编程 JAVA web开发实例讲解 宠物分类展现web项目 第04章 用Hibernate优化宠物分类展现DAO类(共33页).ppt ...

    jdbctest03.zip

    采用java语言开发,原生jdbc编程,dao层和service分离,数据库采用oracle 采用java语言开发,原生jdbc编程,dao层和service分离,数据库采用oracle

    JDBCForZombies:JDBC工作坊

    通过本教程,您将学习如何使用 Java 编程语言建立与关系数据库的连接,以及查询和修改数据。 您还将知道如何使用 DAO(数据访问对象)在其自己的类中组织数据访问代码。 先决条件 在本教程中,我们将使用 MySQL ...

    Spring面试题

    ☆ Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭...

Global site tag (gtag.js) - Google Analytics