sql数据库通用类

  1 /**
  2  *
  3  */
  4 package com.hotel.util;
  5
  6 import java.sql.Connection;
  7 import java.sql.DriverManager;
  8 import java.sql.PreparedStatement;
  9 import java.sql.ResultSet;
 10 import java.sql.ResultSetMetaData;
 11 import java.util.ArrayList;
 12 import java.util.HashMap;
 13 import java.util.List;
 14 import java.util.Map;
 15
 16 import com.hotel.constant.Constants;
 17
 18 /**
 19  * 数据库连接通用类
 20  * 连接数据库的步骤:
 21  * 1. 导入驱动包
 22  * 2. 加载驱动
 23  * 3. 通过驱动管理器类获取数据库连接
 24  * 4. 通过连接对象创建预编译对象
 25  * 5. 通过编译对象执行SQL指令并处理返回结果
 26  * 6. 关闭相关操作对象
 27  *
 28  */
 29 public class DBUtil {
 30
 31
 32
 33     /**
 34      * 定义获取连接对象的方法
 35      *
 36      */
 37     private static Connection getConn() {
 38
 39         // 定义连接对象句柄
 40         Connection conn = null;
 41
 42         try {
 43             // 加载驱动
 44             Class.forName(Constants.DRIVER_NAME);
 45             // 通过驱动管理器类获取数据库连接
 46             conn = DriverManager.getConnection(Constants.URL, Constants.USERNAME, Constants.PASSWORD);
 47         } catch (Exception e) {
 48             e.printStackTrace();
 49         }
 50         return conn;
 51     }
 52
 53     /**
 54      * 定义执行简单SQL的增,删,改指令
 55      * @param sql 调用传入的SQL指令
 56      * @param objects 执行SQL指令需要的参数
 57      * @return int 返回方法操作后受影响的行数
 58      */
 59     public static int executeMyUpdate(String sql,Object... objects) {
 60
 61         // 定义接受受影响行数的变量
 62         int row = 0;
 63         // 定义连接对象句柄
 64         Connection conn = null;
 65         // 定义编译对象句柄
 66         PreparedStatement pst = null;
 67
 68         // 通过调用本类中的获取连接对象
 69         conn = getConn();
 70
 71         try {
 72             // 通过连接对象创建编译对象
 73             pst = conn.prepareStatement(sql);
 74             // 设置SQL命令所需的参数
 75             if(objects != null) {
 76                 for(int i =0 ;i<objects.length;i++) {
 77                     pst.setObject(i+1, objects[i]);
 78                 }
 79             }
 80
 81             // 执行SQL指令并处理返回结果
 82             row = pst.executeUpdate();
 83         } catch (Exception e) {
 84             e.printStackTrace();
 85         } finally {
 86             closeObjects(pst,conn);
 87         }
 88
 89         // 返回受影响行数
 90         return row;
 91     }
 92
 93     /**
 94      * 定义执行简单查询语句的通用方法
 95      * @param sql 调用传入查询的SQL指令
 96      * @param objects 查询所需参数
 97      * @return List<Map<String,Object>> 返回查询构建集合对象
 98      */
 99     public static List<Map<String,Object>> executeQuery(String sql,Object...objects) {
100         // 定义表集合对象
101         List<Map<String,Object>> table = new ArrayList<Map<String,Object>>();
102         // 定义连接对象句柄
103         Connection conn = null;
104         // 定义编译对象句柄
105         PreparedStatement pst = null;
106         // 定义结果集句柄
107         ResultSet rs = null;
108
109         // 通过调用本类中的获取连接对象
110         conn = getConn();
111
112         try {
113             // 通过连接对象创建预编译对象
114             pst = conn.prepareStatement(sql);
115             // 为查询编译对象设置参数
116             if(objects != null) {
117                 for(int i=0;i<objects.length;i++) {
118                     pst.setObject(i+1, objects[i]);
119                 }
120             }
121             // 通过编译对象执行SQL命令
122             rs = pst.executeQuery();
123
124             // 判断结果是否为空
125             if(rs != null) {
126                 // 把得到结果集转化为一张虚拟表
127                 ResultSetMetaData rsd = rs.getMetaData();
128                 // 得到查询表有多少个字段(列)
129                 int count = rsd.getColumnCount();
130
131                 // 得到当前遍历的行Map(key,value)
132                 while(rs.next()) {
133                     // 定义存储行的Map集合对象
134                     Map<String,Object> row = new HashMap<String,Object>();
135                     // 循环列
136                     /* userId(key)      userName             userPass      userRemark
137                     ----------- -------------------- ------------------------------
138                        10002 (value)    normal               123           normal   */
139                     /*
140                      * rsd.getColumnName(i+1)  得到当前遍历行对应列的名称
141                      */
142                     for(int i=0;i<count;i++) {
143                         row.put(rsd.getColumnName(i+1), rs.getObject(rsd.getColumnName(i+1)));
144                     }
145
146                     // 把每次遍历的行存储到表集合中
147                     table.add(row);
148                 }
149             }
150         } catch (Exception e) {
151             e.printStackTrace();
152         } finally {
153             closeObjects(rs,pst,conn);
154         }
155
156         return table;
157     }
158
159     /**
160      * 释放操作对象的方法
161      * @param objects 需要释放对象的列表
162      */
163     private static void closeObjects(Object...objects) {
164         if(objects != null) {
165             for(Object param : objects) {
166                 try {
167                     if(param instanceof ResultSet) {
168                         ((ResultSet)param).close();
169                     }
170
171                     if(param instanceof PreparedStatement) {
172                         ((PreparedStatement)param).close();
173                     }
174
175                     if(param instanceof Connection) {
176                         Connection conn = ((Connection)param);
177                         if(!conn.isClosed()) {
178                             conn.close();
179                             conn = null;
180                         }
181                     }
182                 } catch (Exception e) {
183                     e.printStackTrace();
184                 }
185             }
186         }
187     }
188
189 }

时间: 2024-11-05 16:41:56

sql数据库通用类的相关文章

C# SQL数据库助手类2.0(自用)

1 using System; 2 using System.Collections.Generic; 3 using System.Configuration; 4 using System.Data; 5 using System.Data.SqlClient; 6 using System.Text; 7 8 namespace YcTools 9 { 10 /// <summary>C# SQL数据库助手类2.0</summary> 11 public class YSql

C#操作SQL Server通用类

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Collections; using System.Data.SqlClient; /// <summary> /// 数据库的通用访问代码 /// 此类为抽象类,不允许实例化,在应用时直接调用即可 /// </summary> public ab

DbHelper数据库通用类使用方法

代码 //执行SQL语句 public static void ExecSqlCommand() { DbHelper db = new DbHelper(); DbCommand command = db.GetSqlStringCommond("select * from t1_insert"); db.ExecuteNonQuery(command); } //执行存储过程 public static void ExecStoredProcedure() { DbHelper d

操作Sql数据库帮助类

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; namespace DateBase { public class Helper { /// <summary> /// 定义SqlConnection /// </summary> public static Sql

使用sqlmetal工具自动生成SQL数据库的Linq类文件

第一部:找到sqlmetal.exe. 运行cmd. 执行命令 cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools 第二步:生成SQL数据库Linq类文件. 执行 sqlmetal /server:数据库地址 /database:数据名字 /user:数据库用户名 /password:密码 /code:生成的Linq类文件名.cs /language:csharp /namespace:命名空间

C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]

原文链接 //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration; namespace XXX{    /// <summary>    /// 针对SQL Server数据库操作的通用类           /// </sum

PHP类初识,通用数据库操作类,前端easyui-datagrid,form

实现功能:     左端datagrid显示简略信息,右侧显示选中行详细信息,数据库增删改 (1)点击选中行,右侧显示详细信息,其中[新增].[修改].[删除]按钮可用,[保存]按钮禁用 (2)点击[新增]按钮,[修改],[删除]按钮禁用,[保存]按钮启用 (3)点击[修改]按钮,[新增],[删除]按钮禁用 难点:通用数据库操作类中insert方法跟update方法 最终效果图: 前端功能不是很完善,按钮之间逻辑还是有点问题,最后补充前端代码 其中Formain.php对前端传值判断,并调用ac

C#:数据库通用访问类 SqlHelper

using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using System.Globalization; using System.IO; using System.Text.RegularExpressions; using System.Xml; using System.Reflection;

数据库操作通用类

DataBase.java 说明: 1. 此类包含对数据库的查询,删除,更新操作.     2. 可以实现对大文本对象的增删改.     3. 利用自建的数据库连接池类, 得到数据库连接.     4. 可以利用Tomcat 自带的连接池, 得到数据库连接 变量:     1. 数据库连接 变量名     : conn 应用范围   : protect 变量类型   : Connection 数据库连接 初始值     : null 是否Static :  否     2. 声明语句 变量名