思想:拿查询举例:把查询结果放到放到学生对象中,然后再把学生对象放到一个容器中,最后冲容器中,取出想要的数据,确保数据安全性
//---------------------------------------------
//创建学生类
/**
*@author Li Jia Xuan
*@version 1.0
*@since 2012-10-29
*@time 上午10:11:11
*/
public class StudentDTO {
private int id;
private String name;
private String pwd;
public StudentDTO(int id, String name, String pwd) {
super();
this.id = id;
this.name = name;
this.pwd = pwd;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPwd() {
return pwd;
}
}
//----------------------------------------------------
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*建立连接,关闭连接
*@author Li Jia Xuan
*@version 1.0
*@since 2012-10-29
*@time 上午10:12:43
*/
public class GetConnection {
static final String DRIVERNAMR = "oracle.jdbc.driver.OracleDriver";
static final String URL = "jdbc:oracle:thin:@192.168.1.254:1521:orcl";
static final String USER = "lijiaxuan";
static final String PWD = "123456";
/**
* 单子模式,只获取一个连接对象
*/
static GetConnection instance = new GetConnection();
private GetConnection() {
}
public static GetConnection getInstance() {
return instance;
}
public Connection getConnection() {
Connection conn = null;
try {
Class.forName(DRIVERNAMR);
conn = DriverManager.getConnection(URL, USER, PWD);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
/**
* 关闭连接,前进后出的顺序
* @param rs
* @param ps
* @param conn
*/
public void closeConnection(ResultSet rs, PreparedStatement ps,
Connection conn) {
if (rs != null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (conn != null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 重载关闭连接
* @param ps
* @param conn
*/
public void closeConnection(PreparedStatement ps, Connection conn) {
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (conn != null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//--------------------------------------------------------------------
import java.util.ArrayList;
/**
*
*@author Li Jia Xuan
*@version 1.0
*@since 2012-10-29
*@time 上午10:20:43
*/
public interface UserDAO {
public ArrayList<StudentDTO> getAll();
public StudentDTO getById(int id);
public boolean update(StudentDTO dto);
public boolean deleteById(int id);
public boolean insert(StudentDTO dto);
}
//------------------------------------------------------------
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
/**
*实现接口
*@author Li Jia Xuan
*@version 1.0
*@since 2012-10-29
*@time 上午10:23:40
*/
public class UserDAOImpl implements UserDAO {
PreparedStatement ps=null;
ResultSet rs=null;
Connection conn= GetConnection.getInstance().getConnection();
@Override
public ArrayList<StudentDTO> getAll() {
ArrayList<StudentDTO> list=new ArrayList<StudentDTO>();
try {
ps=conn.prepareStatement("select * from student");
rs=ps.executeQuery();
while(rs.next()){
int id=rs.getInt("stu_id");
String name=rs.getString("username");
String pwd=rs.getString("pwd");
StudentDTO dto=new StudentDTO(id,name,pwd);
list.add(dto);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
GetConnection.getInstance().closeConnection(rs, ps, conn);
}
return list;
}
@Override
public StudentDTO getById(int id) {
StudentDTO dto=null;
try {
ps=conn.prepareStatement("select * from student where stu_id=?");
ps.setInt(1, id);
rs=ps.executeQuery();
while(rs.next()){
int id1=rs.getInt("stu_id");
String name=rs.getString("username");
String pwd=rs.getString("pwd");
dto=new StudentDTO(id1,name,pwd);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
GetConnection.getInstance().closeConnection(rs, ps, conn);
}
return dto;
}
@Override
public boolean update(StudentDTO dto) {
try {
ps=conn.prepareStatement("update student set pwd=? where username=?");
ps.setString(1, dto.getPwd());
ps.setString(2, dto.getName());
int i=ps.executeUpdate();
if(i>0){
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
GetConnection.getInstance().closeConnection( ps, conn);
}
return false;
}
@Override
public boolean deleteById(int id) {
try {
ps=conn.prepareStatement("delete from student where stu_id=?");
ps.setInt(1, id);
int i=ps.executeUpdate();
if(i>0){
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
GetConnection.getInstance().closeConnection( ps, conn);
}
return false;
}
@Override
public boolean insert(StudentDTO dto) {
try {
ps=conn.prepareStatement("insert into student values(seq_student.nextval,?,?)");
ps.setString(1, dto.getName());
ps.setString(2, dto.getPwd());
int i=ps.executeUpdate();
if(i>0){
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
GetConnection.getInstance().closeConnection( ps, conn);
}
return false;
}
}
//---------------------------------------------------------------------
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Iterator;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
/**
*
*@author Li Jia Xuan
*@version 1.0
*@since 2012-10-29
*@time 上午11:00:10
*/
public class UserDAOImplTest {
UserDAOImpl u=new UserDAOImpl();
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Test
//测试查询所有
public void testGetAll() {
ArrayList<StudentDTO> al=u.getAll();
Iterator<StudentDTO> it=al.iterator();
while(it.hasNext()){
StudentDTO s=it.next();
System.out.println("编号"+s.getId()+"姓名"+s.getName()+"密码"+s.getPwd());
}
}
@Test
//测试通过ID查询
public void testGetById() {
StudentDTO s=u.getById(25);
System.out.println("编号:"+s.getId()+"姓名:"+s.getName()+"密码:"+s.getPwd());
}
@Test
//测试更新
public void testUpdate() {
StudentDTO dto=new StudentDTO(1,"赵六","111111");
System.out.println(u.update(dto));
}
@Test
//测试删除
public void testDeleteById() {
System.out.println(u.deleteById(1));
}
@Test
//测试插入
public void testInsert() {
StudentDTO dto=new StudentDTO(1,"赵六","111111");
System.out.println(u.insert(dto));
}
}
分享到:
相关推荐
### JDBC连接数据库各种数据库参数详解 #### 一、Oracle8/8i/9i数据库(thin模式) 在Java中通过JDBC访问Oracle数据库时,通常采用thin驱动方式。thin驱动是一种纯Java驱动,无需依赖任何非Java代码即可完成与...
加载Oracle JDBC驱动也是连接数据库前必要的步骤,通常通过Class.forName()方法加载驱动,这里的驱动类名是oracle.jdbc.OracleDriver。可以通过打开JAR包找到对应的.class文件,并复制其全名以供使用。 获取数据库...
在"jdbc连接数据库事务工厂模式"中,我们主要关注三个方面:JDBC、事务管理和工厂模式。 首先,JDBC提供了与数据库交互的基本步骤,包括加载驱动、建立连接、执行SQL语句和关闭连接。例如,使用`Class.forName()`...
在这个名为“使用java,jdbc连接数据库和Java swing图形化界面完成一个商品管理系统.zip”的压缩包中,包含了使用Java编程语言,结合JDBC(Java Database Connectivity)接口与MySQL数据库,以及利用Java Swing构建...
JDBC 提供两种 API,分别是面向开发人员的 API 和面向底层的 JDBC 驱动程序 API,底层主要通过直接的 JDBC 驱动和 JDBC-ODBC 桥驱动实现与数据库的连接。一般来说,Java 应用程序访问数据库的过程是:装载数据库驱动...
JDBC(Java DataBase Connectivity)是一种java数据库连接技术,它对ODBC API进行了面向对象的封装和重新设计。JDBC提供了两种方式连接数据库:ODBC和专用驱动程序。 JDBC 连接数据库 JDBC 连接数据库的主要任务是...
**JDBC连接数据库实例详解** Java Database Connectivity (JDBC) 是Java编程语言中用于规范客户端程序如何访问数据库的应用程序接口(API),它为开发者提供了一种标准的、面向对象的方式来访问和操作各种数据库系统...
Java面向对象程序设计中,JDBC(Java Database Connectivity)是Java平台用来与各种数据库进行交互的一种标准接口。它使得Java开发者能够使用SQL语句来执行数据库操作,包括连接数据库、查询、更新、添加和删除数据...
既然可以将Oracle的数据库作为一种面向对象的数据库来使用,就可以考虑将应用程序中的面向对象模式转到数据库中。目前的方法是创建Java bean作为伪装的数据库对象,将它们的属性映射到关系表中,然后在这些bean中...
【***】使用JDBC连接数据库中级操作,解决代码冗余的情况。。不会的小伙伴欢迎提问,在这里,也征求一些志同道合的学友
- 面向对象的设计,便于封装和重用代码。 - **缺点**: - 相对于原生API,访问速度可能会有所降低。 - 不同数据库产品的兼容性问题可能带来额外的工作量。 **1.6 JDBC版本** - **JDBC 1.x**:最初版本,提供了...
这些框架在底层仍然基于JDBC,但提供了一种更加面向对象的方式来操作数据库。 6. **JDBC的局限性** - 性能:虽然JDBC提供了一致的接口,但在执行大量SQL时,手动管理和关闭资源可能会导致性能瓶颈。 - 代码复杂性...
本文详细介绍了JDBC的基本概念、工作原理、驱动类型以及如何使用JDBC连接Oracle数据库并执行基本操作。对于初学者来说,理解这些核心知识点对于后续开发Java应用时使用JDBC进行数据库操作非常重要。此外,还介绍了...
总结来说,使用JDBC和JavaBean连接数据库是一种常见的做法,它结合了JDBC的数据库操作能力与JavaBean的面向对象特性,提高了代码的可读性和可维护性。在实际开发中,还可以考虑使用连接池来管理数据库连接,进一步...
ORM使得开发者可以使用面向对象的方式来操作数据库,减少了SQL的编写,提高了开发效率。ORM框架通常也支持连接池,进一步优化性能。 每种数据库连接方式都有其优缺点,选择哪种方式取决于具体的应用场景和需求。...
要使用JDBC,首先需要在程序中加载数据库驱动(通常通过Class.forName()方法),然后通过DriverManager.getConnection()建立数据库连接。一旦有了连接,就可以使用Statement或PreparedStatement对象执行SQL查询,...
**JDBC连接Access数据库** Java Database Connectivity (JDBC) 是Java平台中用于与关系型数据库交互的一组标准API。在本教程中,我们将探讨如何使用JDBC连接到Microsoft Access数据库,这是一种广泛使用的轻量级...
Intersystems Cache是一款高性能、面向对象的数据库系统,广泛应用于医疗、金融等领域的复杂数据管理。在Java环境中,我们通常通过JDBC(Java Database Connectivity)驱动来实现与Cache数据库的连接。以下是一些...
Java-JDBC连接数据库是软件开发中的一个重要环节,主要用于在Java应用程序中操作数据库。JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新...