1. //通过SQL反回对应的数据集
2. //比如:sql select nameSc,age from users
3. public List getResultDataList(String sql, Connection con) {
4. List<Map> dataList = new ArrayList<Map>();
5. Map<String, String> map = new HashMap<String, String>();//存放对应字段数据
6. PreparedStatement ps = null;
7. ResultSet ds = null;
8. ResultSetMetaData rsd;
9. try {
10. ps = con.prepareStatement(sql);
11. ds = ps.executeQuery();
12. while (ds.next()) {
13. map = new HashMap<String, String>();//通过键值对存放一条记录的数据
14. rsd = ds.getMetaData();
15. for (int i = 1; i <= rsd.getColumnCount(); i++) {
16. switch (rsd.getColumnType(i)) {//通过判断数据类型转换数据
17. case 12:// varchar(12)
18. map.put(rsd.getColumnName(i), ds.getString(i));
19. break;
20. case 1:// char(1)
21. map.put(rsd.getColumnName(i), ds.getString(i));
22. break;
23. case -7:// bit(-7)
24. map.put(rsd.getColumnName(i), Boolean.toString(ds
25. .getBoolean(i)));
26. break;
27. case 4:// int(4)
28. map.put(rsd.getColumnName(i), Integer.toString(ds
29. .getInt(i)));
30. break;
31. case 5:// smallint(5)
32. map.put(rsd.getColumnName(i), Integer.toString(ds
33. .getInt(i)));
34. break;
35. case 93:// datetime(93)
36. if (ds.getString(i) == null)
37. map.put(rsd.getColumnName(i), "");
38. else {
39. if (ds.getString(i).length() >= 19) {
40. map.put(rsd.getColumnName(i), ds.getString(i)
41. .substring(0, 19));
42. } else {
43. map.put(rsd.getColumnName(i), ds.getString(i)
44. .substring(0, 10));
45. }
46. }
47. break;
48. case 3:// decimal(3)
49. map.put(rsd.getColumnName(i), Double.toString(ds
50. .getDouble(i)));
51. break;
52. default:
53. map.put(rsd.getColumnName(i), ds.getString(i));
54. break;
55. }
56. }
57. dataList.add( map);//存放所有行数据
58. }
59. } catch (SQLException e) {
60. e.printStackTrace();
61. throw new RuntimeException(e);
62. } finally {
63. <span style="color: red;">connection是通过HibernateDaoSupport获取得到的,似乎能够自动回收(反回到连接池),是否真的不用关闭连接呢?</span>
64. /*
65. * try{ if(ds!=null){ds.close();ds=null;}
66. * if(ps!=null){ps.close();ps=null;}
67. * if(con!=null){con.close();con=null;} }catch(SQLException e){}
68. */
69. }
70. return dataList;
71. }
1. //通过传递SQL,Sql的参数更新数据
2. //比如 sql insert into users(nameCs,age)valuse(?,?)
3. //params就是存放?代表的值
4. public int execUpdateByParams(String sql, Connection con, List params) {
5. PreparedStatement ps = null;
6. int message = 0;
7. try {
8. String paramsStr="";
9. ps = con.prepareStatement(sql);
10. if (params != null) {
11. for (int i = 0; i < params.size(); i++) {
12. String p = params.get(i)==null?null:"" + params.get(i);//设置对应的参数
13. ps.setString(i + 1, p);
14. }
15. }
16. ps.executeUpdate();
17. } catch (SQLException e) {
18. e.printStackTrace();
19. message = -1;
20. throw new RuntimeException(e);
21. } finally {
22. try {
23. if (ps != null) {
24. <span style="color: red;">ps.close();</span>//怎么在这他有把这个关闭了呢?这会有问题吧?
25. ps = null;
26. }
27. // if(con!=null){con.close();con=null;}
28. } catch (SQLException e) {
29. }
30. }
31.
32. return message;
33. }
分享到:
相关推荐
本篇文章将详细探讨`jdbc通用类`的相关知识点,包括两种连接数据库的方法——基于连接池和属性文件,以及通用方法的设计思路。 首先,我们来看连接数据库的方法: 1. **基于连接池的数据库连接**:连接池是一种...
总结来说,"jdbc通用数据库连接"是指通过Java的JDBC API,封装了数据库操作的类或方法,使得在不同项目中可以方便快捷地进行数据库交互。这种封装涵盖了数据库连接的全过程,包括连接建立、SQL执行、结果处理以及...
总结来说,自定义JDBC通用类结合反射和元数据信息,能帮助我们创建高效、灵活且易于维护的数据库访问层。通过封装常见的数据库操作,不仅可以减少代码重复,还能使程序更易扩展,适应不同数据库的需求。在开发过程中...
一个典型的jdbc通用连接操作类可能会包含以下方法: 1. `getConnection()`:获取数据库连接,通常会包含异常处理,确保连接的建立不会因错误中断。 2. `executeQuery(String sql)`:执行SQL查询,返回ResultSet对象...
### JDBC数据库操作通用类知识点详解 #### 一、概述 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC API既...
本篇将围绕“Spring3 JDBC通用DAO封装”这一主题展开,介绍如何实现一个高效的DAO层,并分享相关代码示例。 1. **Spring3 JDBC概述** Spring3 JDBC通过提供JdbcTemplate和SimpleJdbcInsert等工具类,帮助开发者...
在Java开发中,数据库操作是不可或缺的一部分,而JDBC连接池是提高数据库访问效率、优化系统资源使用的重要技术。本文将深入探讨JDBC连接池的概念、工作原理,并以"通用basedao"模板为例,讲解如何在实际项目中应用...
神通数据库是中国自主开发的一款高效、安全的数据库管理系统,被称为神舟通用数据库或OSCar。它在信息化建设中扮演着重要角色,特别是在国家安全和关键领域的数据存储与处理方面。JDBC(Java Database Connectivity...
"JDBC的通用模块、角色、权限管理"是针对系统中的数据访问、角色管理和权限控制的一种实现,旨在提供一个可复用的、高度封装的解决方案,以简化开发流程,提高代码的可维护性和安全性。 首先,通用模块的设计是为了...
在IT行业中,JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。本文将深入探讨对JDBC的封装,旨在提高数据库操作的效率、...
JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了高度的抽象层,使得开发人员能够使用相同的API来访问...
Gbase的JDBC驱动为Java应用程序提供了一种标准的接口,使得开发者可以使用Java语言来访问和管理Gbase数据库。 4. **优炫数据库(UXDB)**:优炫数据库是一款面向事务处理的高性能数据库系统,尤其适用于金融、电信、...
"基于JDBC的最好用数据库访问类"是一个专为简化JDBC操作而设计的工具类,它的目标是提供更高效、易用和健壮的数据库访问方式,从而减轻开发者的工作负担。 首先,让我们了解一下JDBC的基本使用流程:加载驱动、建立...
JDBC 的主要功能是提供一个通用的接口,用于访问不同的数据库管理系统。 二、 JDBC 架构 JDBC 的架构主要由以下几个组件组成: * JDBC Driver:负责将 JDBC 的调用转换为数据库管理系统的调用。 * JDBC API:提供...
本资源名为“最新版加注释通用JDBC数据库连接池”,显然它提供了一个带有详细注释的通用JDBC数据库连接池实现,这将有助于开发者理解和使用。这里我们将详细讲解数据库连接池的概念、工作原理以及如何使用。 **...
Java通用DAO(Data Access Object)模式是软件开发中用于封装数据访问操作的一种设计模式,它为业务层提供了统一的接口,使得业务逻辑与数据库操作分离,提高了代码的可复用性和可维护性。在Java中,实现通用DAO通常...
标题中的“JDBC链接Oracle数据库增删改查通用工具类”指的是一个Java编程中的实用工具类,它封装了与Oracle数据库交互的JDBC操作,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select)这四种基本...
2. 通用性:JDBC 可以访问不同的数据库管理系统,无需考虑底层数据库的差异。 3. 高效性:JDBC 提供了高效的数据库访问方式,提高了应用程序的性能。 然而,在使用 JDBC 访问数据库时,也需要注意一些问题,例如: ...
JDBC(Java Database Connectivity)是Java语言中用于规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。Gbase-jdbc-driver就是遵循JDBC标准的驱动程序,使得Java开发者可以...