`

JDBC两种查询方法

阅读更多
//查询方法 返回值是以list形式返回的
public static List<Map<String, String>> executeQuery(String sql){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
ResultSet rs = null;
Connection conn = null;
PreparedStatement stm = null;
try{
conn = getConnection();
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
ResultSetMetaData metaData = rs.getMetaData(); 
            String[] names = new String[metaData.getColumnCount()]; 
            for (int i = 0; i < metaData.getColumnCount(); i++) { 
                names[i] = (metaData.getColumnLabel(i + 1)).toLowerCase(); 
            } 
            String str = "";
            HashMap<String, String> tmp = new HashMap<String, String>(); 
            while (rs.next()) { 
                tmp = new HashMap<String, String>(); 
                for (int i = 0; i < names.length; i++) { 
                    str = rs.getString(i + 1); 
                    str = str == null ? "" : str.trim(); 
                    tmp.put(names[i], str); 
                } 
                list.add(tmp); 
            } 
            return list; 
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(rs != null)
rs.close();
if(conn != null)
conn.close();
if(stm != null)
stm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}

//更新,删除,新增方法
public static boolean updateQuery(String sql){
int effectRowNum = 0;
Connection conn = null;
PreparedStatement stm = null;
try{
conn = getConnection();
stm = conn.prepareStatement(sql);
effectRowNum = stm.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(conn != null)
conn.close();
if(stm != null)
stm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return effectRowNum == 1;
}

public static List execute(String sql, Class cla){
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
List ret = new ArrayList();
Field[] fields = cla.getDeclaredFields();
try{
conn = getConnection();
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
ResultSetMetaData metaDate = rs.getMetaData();
int colCount = metaDate.getColumnCount();
while(rs.next()){
Object newInstance = cla.newInstance();
for(int i = 1; i <= colCount; i++){
Object value = rs.getObject(i);
if(value != null)
for(int j = 0; j < fields.length; j++){
                        Field f = fields[j];
                        if(f.getName().equalsIgnoreCase(metaDate.getColumnName(i))){
                        Class[] paraTypes = new Class[]{value.getClass()};
                        Method method = cla.getMethod("set" + f.getName().substring(0, 1).toUpperCase() + f.getName().substring(1), paraTypes);
                        method.invoke(newInstance, new Object[]{value});
                        break;
                        }
}
}
ret.add(newInstance);
}
return ret;
}catch(Exception e){
e.printStackTrace();
}finally{
try {
if(rs != null)
rs.close();
if(conn != null)
conn.close();
if(pst != null)
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
分享到:
评论

相关推荐

    两种实现JDBC添加、删除、修改操作的方法对比

    两种实现JDBC添加、删除、修改操作的方法对比 在本文中,我们将讨论两种实现JDBC添加、删除、修改操作的方法对比。这些方法可以用来实现添加、删除、修改操作的共用方法,分为两个方法:一个是设置...

    jdbc+serlvet分页查询代码

    【标题】"jdbc+serlvet分页查询代码"涉及的知识点主要集中在Java数据库连接(JDBC)和Servlet两个核心技术上,它们是Web应用程序中处理数据和交互的关键组件。 **JDBC(Java Database Connectivity)** JDBC是Java...

    JDBC连接各种数据库的方法

    5. **Microsoft SQL Server**:有两种方式,一是通过`jtds`项目提供的驱动,二是使用官方的`com.microsoft.jdbc.sqlserver.SQLServerDriver`驱动。两种方式均需加载相应的驱动类,并设置合适的URL进行连接。 6. **...

    JDBC详解 JDBC详解

    加载 Driver 类有两种方式: 1. 通过调用方法 Class.forName。这将显式地加载驱动程序类。 2. 通过将驱动程序添加到 java.lang.System 的属性 jdbc.drivers 中。这是一个由 DriverManager 类加载的驱动程序类名的...

    Java通用Dao包括JDBC和JNDI两种连接方式

    在Java中,实现通用DAO通常涉及到JDBC(Java Database Connectivity)和JNDI(Java Naming and Directory Interface)两种不同的数据库连接方式。 首先,让我们来详细了解一下JDBC。JDBC是Java中用于与关系型数据库...

    Spring Data JDBC与JDBC的区别

    Spring Data JDBC与JDBC是两种不同的数据库访问方式,它们在Java开发中有着广泛的应用。JDBC(Java Database Connectivity)是Java平台的标准API,用于与各种数据库进行交互。它提供了低级别的数据库操作,如建立...

    java通过JDBC连接数据库的两种方式

    这两种方式都是使用 JDBC 连接 SQL Server 数据库的常见方法。 一、混合验证模式 混合验证模式是 SQL Server 的经典连接数据库方法。如果数据库没有配置错误,连接应该很顺利。在这种模式下,需要提供用户名和密码...

    sqljdbc+mysqljdbc

    这里提到的"sqljdbc+mysqljdbc"主要涉及两种不同的JDBC驱动,分别是微软SQL Server的JDBC驱动和MySQL的JDBC驱动。 首先,`sqljdbc4.jar`是微软提供的用于连接Java应用程序和SQL Server数据库的JDBC驱动包。这个驱动...

    jdbc资料jdbc资料jdbc资料pdf

    JDBC提供了一种标准化的方法来访问各种数据库,极大地简化了Java应用程序与数据库之间的交互过程。理解JDBC的工作原理、API以及如何编写基本的应用程序是Java开发人员必备的技能之一。通过上述介绍,我们可以看到...

    JDBC使用游标实现分页查询的方法

    在Java数据库连接(JDBC)中,游标(Cursor)是一种重要的概念,它允许我们以迭代的方式处理查询结果集。游标提供了前后移动查询结果的能力,这对于实现分页查询非常有用,尤其是处理大数据量时,避免一次性加载全部...

    自学jdbc心得体会

    JDBC(Java Database Connectivity)是一种Java标准的数据库连接API,它允许Java程序访问各种关系数据库。下面是JDBC的基础知识点: 一、JDBC原理概述 * JDBC是一套协议,由Sun定义的一组接口,由数据库厂商来实现...

    jdbc2000,jdbc2005

    2. **存储过程支持(Stored Procedures)**:提供了一种调用数据库存储过程的方法,使开发者能更好地利用数据库的内置功能。 3. **结果集的滚动和分页(Scrollable Result Sets and Pagination)**:开发者可以前后...

    利用JDBC解决大数据查询的问题

    创建`ResultSet`的方法通常有两种: - 使用`createStatement`方法: ```java Statement stmt = conn.createStatement(int RSType, int RSConcurrency); ``` - 使用`prepareStatement`方法: ```java ...

    sqlserver驱动包 jdbc驱动 sqljdbc.jar和sqljdbc4.jar

    本文将详细介绍这两个重要的驱动文件——sqljdbc.jar和sqljdbc4.jar,以及如何利用它们来建立和管理数据库连接。 首先,sqljdbc.jar和sqljdbc4.jar都是由微软官方提供的JDBC驱动程序,适用于不同版本的Java运行环境...

    jdbc

    JDBC提供两种执行SQL的方式: - Statement:用于执行静态SQL语句,适用于不经常变动的查询。 - PreparedStatement:用于执行预编译的SQL语句,可以提高性能并防止SQL注入攻击。 在Oracle 9i中,JDBC支持包括数据...

    jdbc 课件.doc

    JDBC的设计基于面向对象的原则,提供了面向连接(Connection)和面向无连接(Connectionless)两种方式,满足不同场景的需求。 **三、JDBC的组成** JDBC主要由以下几个部分组成: 1. **JDBC驱动程序**:这是JDBC...

    JSP通过JDBC驱动各种数据库方法

    4. SQL操作:JDBC提供Statement和PreparedStatement两种接口用于执行SQL语句。Statement适用于静态SQL,而PreparedStatement则适合动态SQL,能防止SQL注入,并且性能更好。 5. 数据操作:通过executeQuery()执行...

    如何避免JDBC引起的内存溢出情况

    本文将重点讨论如何在MySQL、SQL Server以及Oracle三种不同的数据库环境下,通过合理配置和优化策略来避免内存溢出。 #### 一、理解内存溢出的原因 内存溢出通常发生在应用程序消耗了超出虚拟机所能分配的最大堆...

    各种数据库的jdbc驱动

    Oracle提供了两种主要的JDBC驱动: Thin驱动和OCI驱动。 Thin驱动(也称为Type 4)是纯Java实现,无需Oracle客户端,直接与数据库服务器通信。而OCI驱动(Type 2)则需要Oracle客户端库,它通过Oracle Net Services...

Global site tag (gtag.js) - Google Analytics