数据库常用操作也就增删改查,其中查有返回结果,而增删改不返回结果。一般用java访问数据库,需要经过以下几个步骤:获得Connection,executeXXX(),释放Connection。而对于executeQuery(),还要依次遍历ResultSet。遍历的代码基本都是相似的,但你又不得不在每一个方法里都重复写。虽然对于小型的项目,Ctrl+C、Ctrl+V也很方便,但这种形式的代码复用绝对不是OO思想所能容忍的。我们要善于运用OO的继承体制真正实现代码的复用。下面的代码中需要用到数据库连接池,其具体代码请参考我的上一篇博客。
DbBean.java
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
public abstract class DbBean {
private ConnectionPool pool;
private Connection conn;
private Statement stmt;
public DbBean()
{
pool = ConnectionPool.getInstance();
conn = pool.getConnection();
try {
stmt = conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
public Statement getStatement()
{
return stmt;
}
public abstract void executeSql(String sql);
}
DbBean是一个抽象类,其中它的构造方法中实现了Statement对象的获取,executeSql方法没有实现,这是留给子类的任务。BdBean有两个子类:SelectBean和UpdateBean.这里用到了模版方法模式,把公共的方法放在父类中实现,像示例中的获得连接的方法,全部在分类的构造函数中实现。这样子类在实例化的时候,就自动继承了这些方法,但子类区别与其它子类的方法,父类就没有必要实现,所以是抽象方法,有每个子类各自实现。
SelectBean.java
import java.sql.ResultSet;
import java.sql.SQLException;
public class SelectBean extends DbBean
{
private ResultSet rs;
public void executeSql(String sql)
{
try {
rs = getStatement().executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
public ResultSet getResultSet()
{
return rs;
}
}
UpdateBean.java
import java.sql.ResultSet;
import java.sql.SQLException;
public class UpdateBean extends DbBean{
public void executeSql(String sql)
{
try {
getStatement().executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
ProductSelect继承于SelectBean,对应数据库中的一张表product。
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class ProductSelect extends SelectBean{
private List<Product> product;
public List<Product> getProductList() throws SQLException
{
ResultSet rs = getResultSet();
product = new ArrayList<Product>();
while(rs.next())
product.add(new Product(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4)));
return product;
}
}
看一下测试类
import java.sql.SQLException;
import java.util.List;
class Test {
public static void main(String[] args) throws SQLException {
DbBean productSelect = new ProductSelect();
productSelect.executeSql("select * from product");
List<Product> productList = ((ProductSelect)productSelect).getProductList();
for(Product product:productList)
{
System.out.println(product.getId());
System.out.println(product.getName());
System.out.println(product.getPath());
System.out.println(product.getDescription());
}
DbBean updateBean = new UpdateBean();
updateBean.executeSql("insert into product values('4','ddd','ddd','ddd')");
productSelect = new ProductSelect();
productSelect.executeSql("select * from product");
productList = ((ProductSelect)productSelect).getProductList();
for(Product product:productList)
{
System.out.println(product.getId());
System.out.println(product.getName());
System.out.println(product.getPath());
System.out.println(product.getDescription());
}
}
}
分享到:
相关推荐
### 设计模式的理解浅析 #### 单例模式在共享数据中的应用 单例模式是一种常用的软件设计模式,它的核心在于确保某个类只有一个实例,并提供一个全局访问点。这种模式非常适用于那些在整个项目中需要一个共享访问...
关于本站“设计模式” Java 提供了丰富的 API,同时又有强大的数据库系统作底层支持,那么我们的编程似乎变成了类似积木的简单"拼凑"和调用, 甚至有人提倡"蓝领程序员",这些都是对现代编程技术的不了解所至. 在...
与业务相关人员交流,了解他们对未来业务发展的看法,可以帮助开发者提前规划,确保数据库设计能够适应未来的变化。同时,回顾过去的项目经验,总结其中的教训,可以帮助避免重蹈覆辙。 #### 二、设计数据库表的...
3. **数据模式资源**:参考书籍如《数据模式资源手册》提供了丰富的数据建模实例,帮助设计者理解各种数据领域。同时,不断学习经典教材和专业书籍如《数据库系统概论》和《Oracle 7与客户/服务器计算技术从入门到...
### 数据库课程设计房屋租赁知识点解析 #### 一、需求分析及功能说明 **1.1 系统概况** - **系统目标**:利用SQL Server数据库技术,构建一个高效的房屋租赁管理系统,旨在通过信息技术手段提升物业管理水平和服务...
我们将使用E-R图和关系模式来描述数据库的结构,并设计出详细的逻辑数据库结构,包括各个实体和关系的定义、主键和外键的指定、索引的建立等。 在设计数据库的过程中,我们需要考虑到数据的一致性和安全性,包括对...
3. 数据库逻辑设计:涉及将概念模型转化为逻辑模型、确定数据存储位置、设计应用程序与数据库接口,其中设计应用程序与数据库接口不属于逻辑设计任务。 4. 完整性规则:元组在主键上的值不能为空,外键和主键可以不...
数据库是一个精心设计、可共享的持久数据集合,具有低冗余度、高数据独立性和良好的扩展性。数据库管理系统(DBMS)是管理数据库的关键工具,它负责创建、操作和维护数据库,同时提供了定义、查询、更新和控制数据的...
同时,用户模式设计考虑了不同权限的用户对信息的访问权限,例如,高级管理人员可能能看到更全面的信息,而普通员工只能查看与自己工作相关的数据。 5. 收获与体会 在项目实施后,作者反思了尚未解决的问题,比如...
例如,Sybase公司的PowerDesign是一款强大的数据库设计工具,它支持多种编程语言(如PB、VB、Delphi等),并通过ODBC接口与市场上流行的三十多个数据库系统(如dBase、FoxPro、Visual FoxPro、SQL Server等)进行...
### 课程设计示范正文:数据库设计相关知识点 #### 一、系统需求分析 **1.1 系统调查** 在进行任何系统设计之前,全面且详细的系统调查是至关重要的第一步。这一过程旨在深入了解现有的业务流程、操作模式以及...
其次,数据库引擎优化顾问是SQL Server 2005引入的新工具,专门用于分析数据库工作负载的性能,并提供物理设计建议。这些建议可能涉及添加、删除或修改索引、索引视图和分区等结构。优化顾问有两种主要模式: 1. ...
3. Communication 的能力:学生需要能够清晰地表达自己的想法和设计理念,并与他人交流。 4. 团队合作的能力:学生需要能够与他人合作,完成共同的任务和项目。 课程设计的目的是为了让学生掌握数据库的原理和设计...
7. **总结与文档**:课程设计完成后,学生需撰写总结报告,包括遇到的问题、解决方案、创新点、不足之处和未来改进的想法。参考文献的引用也体现了研究和学习的严谨性。 8. **评分标准**:设计的完整性和功能性占50...
6. **数据库设计**:聊天软件的数据库设计可能包含用户表、聊天室表、消息表等。用户表存储用户信息,聊天室表用于管理聊天组,消息表记录每个用户的聊天记录,包括发送者、接收者、消息内容、发送时间等字段。 7. ...
1. **理论与实践结合**:通过课程设计,学生能将课堂上学到的数据库理论知识应用于实际问题的解决,提高分析问题的能力。 2. **系统设计思想**:培养学生利用数据库原理进行系统应用设计的思维和方法。 3. **技术...
这种系统通常采用MVC(Model-View-Controller)设计模式,将业务逻辑、数据处理和用户界面分离开来,提高代码的可维护性和可扩展性。 在MVC模式中: - **模型(Model)**:负责处理业务逻辑和数据管理。在这个考试...