`

完全面向对象 的方法 jdbc连接数据库

阅读更多
思想:拿查询举例:把查询结果放到放到学生对象中,然后再把学生对象放到一个容器中,最后冲容器中,取出想要的数据,确保数据安全性
//---------------------------------------------
//创建学生类
/**
*@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连接数据库各种数据库参数大全

    ### JDBC连接数据库各种数据库参数详解 #### 一、Oracle8/8i/9i数据库(thin模式) 在Java中通过JDBC访问Oracle数据库时,通常采用thin驱动方式。thin驱动是一种纯Java驱动,无需依赖任何非Java代码即可完成与...

    第五章 JDBC连接数据库.pdf

    加载Oracle JDBC驱动也是连接数据库前必要的步骤,通常通过Class.forName()方法加载驱动,这里的驱动类名是oracle.jdbc.OracleDriver。可以通过打开JAR包找到对应的.class文件,并复制其全名以供使用。 获取数据库...

    jdbc连接数据库事务工厂模式

    在"jdbc连接数据库事务工厂模式"中,我们主要关注三个方面:JDBC、事务管理和工厂模式。 首先,JDBC提供了与数据库交互的基本步骤,包括加载驱动、建立连接、执行SQL语句和关闭连接。例如,使用`Class.forName()`...

    使用java,jdbc连接数据库和Java swing图形化界面完成一个商品管理系统.zip

    在这个名为“使用java,jdbc连接数据库和Java swing图形化界面完成一个商品管理系统.zip”的压缩包中,包含了使用Java编程语言,结合JDBC(Java Database Connectivity)接口与MySQL数据库,以及利用Java Swing构建...

    Java jdbc数据库连接池总结

    JDBC 提供两种 API,分别是面向开发人员的 API 和面向底层的 JDBC 驱动程序 API,底层主要通过直接的 JDBC 驱动和 JDBC-ODBC 桥驱动实现与数据库的连接。一般来说,Java 应用程序访问数据库的过程是:装载数据库驱动...

    在JSP中用jdbc连接数据库教程2.ppt

    JDBC(Java DataBase Connectivity)是一种java数据库连接技术,它对ODBC API进行了面向对象的封装和重新设计。JDBC提供了两种方式连接数据库:ODBC和专用驱动程序。 JDBC 连接数据库 JDBC 连接数据库的主要任务是...

    JDBC连接数据库实例+附源码

    **JDBC连接数据库实例详解** Java Database Connectivity (JDBC) 是Java编程语言中用于规范客户端程序如何访问数据库的应用程序接口(API),它为开发者提供了一种标准的、面向对象的方式来访问和操作各种数据库系统...

    Java面向对象程序设计JDBC数据库操作.ppt

    Java面向对象程序设计中,JDBC(Java Database Connectivity)是Java平台用来与各种数据库进行交互的一种标准接口。它使得Java开发者能够使用SQL语句来执行数据库操作,包括连接数据库、查询、更新、添加和删除数据...

    jdbc连接数据库的方式2

     既然可以将Oracle的数据库作为一种面向对象的数据库来使用,就可以考虑将应用程序中的面向对象模式转到数据库中。目前的方法是创建Java bean作为伪装的数据库对象,将它们的属性映射到关系表中,然后在这些bean中...

    使用JDBC连接数据库操作

    【***】使用JDBC连接数据库中级操作,解决代码冗余的情况。。不会的小伙伴欢迎提问,在这里,也征求一些志同道合的学友

    JDBC与Java数据库编程

    - 面向对象的设计,便于封装和重用代码。 - **缺点**: - 相对于原生API,访问速度可能会有所降低。 - 不同数据库产品的兼容性问题可能带来额外的工作量。 **1.6 JDBC版本** - **JDBC 1.x**:最初版本,提供了...

    JDBC数据库连接JAR包

    这些框架在底层仍然基于JDBC,但提供了一种更加面向对象的方式来操作数据库。 6. **JDBC的局限性** - 性能:虽然JDBC提供了一致的接口,但在执行大量SQL时,手动管理和关闭资源可能会导致性能瓶颈。 - 代码复杂性...

    JDBC链接数据库

    本文详细介绍了JDBC的基本概念、工作原理、驱动类型以及如何使用JDBC连接Oracle数据库并执行基本操作。对于初学者来说,理解这些核心知识点对于后续开发Java应用时使用JDBC进行数据库操作非常重要。此外,还介绍了...

    jdbc javabean 连接数据库

    总结来说,使用JDBC和JavaBean连接数据库是一种常见的做法,它结合了JDBC的数据库操作能力与JavaBean的面向对象特性,提高了代码的可读性和可维护性。在实际开发中,还可以考虑使用连接池来管理数据库连接,进一步...

    数据库连接的4种方式

    ORM使得开发者可以使用面向对象的方式来操作数据库,减少了SQL的编写,提高了开发效率。ORM框架通常也支持连接池,进一步优化性能。 每种数据库连接方式都有其优缺点,选择哪种方式取决于具体的应用场景和需求。...

    java和jdbc用数据库连接的swing界面

    要使用JDBC,首先需要在程序中加载数据库驱动(通常通过Class.forName()方法),然后通过DriverManager.getConnection()建立数据库连接。一旦有了连接,就可以使用Statement或PreparedStatement对象执行SQL查询,...

    JDBC连接Access数据库

    **JDBC连接Access数据库** Java Database Connectivity (JDBC) 是Java平台中用于与关系型数据库交互的一组标准API。在本教程中,我们将探讨如何使用JDBC连接到Microsoft Access数据库,这是一种广泛使用的轻量级...

    java连接cache数据库说明,数据库驱动,cache可视化工具

    Intersystems Cache是一款高性能、面向对象的数据库系统,广泛应用于医疗、金融等领域的复杂数据管理。在Java环境中,我们通常通过JDBC(Java Database Connectivity)驱动来实现与Cache数据库的连接。以下是一些...

    JAVA-JDBC连接数据库(查询_添加_修改_删除)[整理].pdf

    Java-JDBC连接数据库是软件开发中的一个重要环节,主要用于在Java应用程序中操作数据库。JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新...

Global site tag (gtag.js) - Google Analytics