- 浏览: 457084 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- 面向对象分析设计/系统架构 (12)
- Mysql/Orcal11g (13)
- JSP/Java//Python/Xharbour (66)
- 软件测试 (21)
- 信息安全小知识 (1)
- Android (5)
- IT生活/哲学/兵法 (23)
- 软件工程/UML/需求分析学习与实践 (6)
- 操作系统/网络/组成原理 (9)
- 持续集成Maven/Hudson/自动化测试 (9)
- eBay /Paypal developer (10)
- Hadoop/HBase/Solr (0)
- 重构分析及其思考 (2)
- 企业架构 (7)
- 分析模式/设计模式 (4)
- SSH学习笔记 (1)
- Quartz及其JWatch监控 (0)
- Linux服务器 (0)
- ExtJs学习笔记 (1)
- 重读java编程思想 (3)
- ESB/SOA/WebServices (0)
- SpringMVC/Struts/Hibernate/Spring (7)
- Xharbour/Pelles C/ SQLite3 (0)
- Magento 电商 (1)
- Object C (1)
- note/redis (0)
- SpringBoot (0)
最新评论
-
snow8261:
太粗略了。
企业架构之数据架构 -
haithink:
面试成功没?
JVM 加载Class文件的原理及其机制 -
feisi0003731843:
不好意思我没有重启,重启后好多了,可有的地方回放还是不成功的。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
feisi0003731843:
这个好像不行吧,我试过了不好使啊。还是用id来做的。不能用啊。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
yuchensuifeng:
您好,静态页面是可以的,但是,我指定error-page为js ...
JSP创建错误处理页面
最近在学习JDBC的时候,编写了一个封装程序,此外用于记录。
下面看看怎么在Add操作中使用该上面的封装类吧!
该AddData方法是用于对user表进行简单的添加操作
其他的Update、Delete、Search方法都类似。就不给出方法了。
一般的JDBC的步骤是
1. Class.forName()进行注册驱动
2. getConnection() 获取连接
3. 创建SQL语句
4. 执行SQL语句
5. 释放资源
在上述的步骤中尤其要注意释放资源。而且在释放资源的时候尤其要注意,当参数传过来的含有未释放的参数。这个释放资源一般属于慢性病。如果你忘记了,那么系统会慢慢的死掉。
import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Connection; /** * JDBC辅助类 * * @author jiangduxi * */ public final class JdbcUtils { private static String url = "jdbc:mysql://localhost:3306/jdbc"; //连接数据库连接 private static String use = "root"; // 登陆数据库用户名 private static String password = "123456"; //登陆数据库密码 private JdbcUtils() { } /** * 使用静态模块来进行注册驱动 */ static { // 1. 注册驱动 try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { throw new ExceptionInInitializerError(e); } } /** * 建立数据库连接 * * @return 返回数据库连接 * @throws SQLException */ public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, use, password); } /** * 释放数据资源 * * @param rs * @param st * @param conn */ public static void free(ResultSet rs, Statement st, Connection conn) { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (st != null) st.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if (conn != null) try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
下面看看怎么在Add操作中使用该上面的封装类吧!
该AddData方法是用于对user表进行简单的添加操作
public static void AddData() throws SQLException{ Connection conn = null Statement st = null; ResultSet rs = null; try{ //建立连接 conn = JdbcUtils.getConnection(); //创建sql语句 st = conn.createStatement(); String sql = "INSERT INTO user(name,birthday,money)VALUES('XXXXX','1985-05-19','500.99')"; //执行SQL语句 int i = st.executeUpdate(sql); }finally { JdbcUtils.free(rs, st, conn); } }
其他的Update、Delete、Search方法都类似。就不给出方法了。
一般的JDBC的步骤是
引用
1. Class.forName()进行注册驱动
2. getConnection() 获取连接
3. 创建SQL语句
4. 执行SQL语句
5. 释放资源
在上述的步骤中尤其要注意释放资源。而且在释放资源的时候尤其要注意,当参数传过来的含有未释放的参数。这个释放资源一般属于慢性病。如果你忘记了,那么系统会慢慢的死掉。
评论
4 楼
dandan_5956
2010-03-11
package com.chm.webservice.dao.impl; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataRetrievalFailureException; import org.springframework.jdbc.core.PreparedStatementCallback; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport; import com.chm.webservice.dao.BaseDAO; /** * @version 1.0 Mar 1, 2010 * @author danjiang */ @SuppressWarnings("unchecked") public class BaseDAOImpl extends SimpleJdbcDaoSupport implements BaseDAO { /** * 查询列表(POJO的属性名一定要与sql中列名一致) * * @param clazz * POJO类模板,支持基本类型int.class,long.class和String * @param sql * 查询SQL * @param args * SQL参数 * @return 指定类型的列表 * @throws Exception */ public List queryList(final Class clazz, final String sql, final Object[] args) { return (List) getJdbcTemplate().execute(new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection con) throws SQLException { PreparedStatement pstmt = con.prepareStatement(sql); if (args != null) { for (int i = 0; i < args.length; i++) pstmt.setObject(i + 1, args[i]); } return pstmt; } }, new PreparedStatementCallback() { public Object doInPreparedStatement(PreparedStatement pstmt) throws SQLException, DataAccessException { ResultSet rs = pstmt.executeQuery(); ResultSetMetaData meta = rs.getMetaData(); List results = null; boolean hasNext = rs.next(); if (hasNext) results = new ArrayList(); try { while (hasNext) { Object obj = null; if (!"String".equals(clazz.getSimpleName()) && !clazz.isPrimitive()) { obj = clazz.newInstance(); for (int i = 1; i <= meta.getColumnCount(); i++) { Field field = clazz.getDeclaredField(meta .getColumnName(i).toLowerCase()); field.setAccessible(true); field.set(obj, convert(rs, i, field.getType())); } } else { obj = convert(rs, 1, clazz); } results.add(obj); hasNext = rs.next(); } } catch (Exception e) { throw new DataRetrievalFailureException("BaseDAO装载数据出错", e); } return results; } }); } /** * 查询实体(POJO的属性名一定要与sql中列名一致) * * @param clazz * POJO类模板,支持基本类型int.class,long.class和String * @param sql * 查询SQL * @param args * SQL参数 * @return 指定类型的实体 * @throws Exception */ public Object queryObject(Class clazz, String sql, Object[] args) { List results = queryList(clazz, sql, args); if (results != null && !results.isEmpty()) return results.get(0); else return null; } /** * 将结果集中值转换为所需类型 * * @param rs * 结果集 * @param i * 第几个值 * @param clazz * 类型 * @return * @throws SQLException */ private Object convert(ResultSet rs, int i, Class clazz) throws SQLException { Object obj = null; if ("String".equals(clazz.getSimpleName())) obj = rs.getString(i); else if ("int".equals(clazz.getSimpleName())) obj = rs.getInt(i); else if ("long".equals(clazz.getSimpleName())) obj = rs.getLong(i); else obj = rs.getObject(i); return obj; } }
3 楼
gundumw100
2010-03-11
每次都getConnection,不觉得浪费?
2 楼
zzzlyr
2010-03-11
这好像是在练习
1 楼
dandan_5956
2010-03-11
这也是封装
发表评论
-
java实现读取文件下所有的excel文件
2012-08-10 09:30 2089最近处理一个压缩包,里面有几百上千个excel文件。本来 ... -
在firefox浏览器下出现如果引用外部连接不存在会隐藏红叉
2012-07-23 15:38 993在firefox下引用出错的一些图片会隐藏红叉。而在IE下 ... -
java 字符替换的一些问题值得记录下
2011-09-30 16:40 884最近在处理一些字符串的替换中发生的一些问题。 最近需要临 ... -
ExtJs学习之弹出框,提示框,输入框等框
2011-06-23 22:13 93811.ExtJs之消息框: 语法:Ext.MessageB ... -
FreeMarker学习之概念
2010-08-04 10:12 860FreeMarker概述: 引用 1. ... -
HTML标准属性
2010-07-03 20:35 754核心属性(Core attributes) 以下标签 ... -
HTML标签
2010-07-03 20:14 1009HTML 4.01 / XHTML 1.0 参考手册 按字母 ... -
HTML基础
2010-07-03 00:54 772基于Web前端技术是有HTML静态语言向现在的JaveSc ... -
Struts2的开发规范和技巧
2010-05-28 14:56 1240基于Struts2的开发,如果没有足够的经验和规范做支撑,并不 ... -
第一次的Struts2的一个异常记录
2010-05-28 14:22 1051在配置正确struts.xml、web.xml、Action类 ... -
Java处理Excel全解一
2010-05-25 10:00 2190在获取客户需求的时候 ... -
Java EE 6 规范之平台概述
2010-05-22 21:28 2213JavaTM平台企业版(Java EETM)的概述 体系结构 ... -
Python3入门学习
2010-05-14 14:51 2237在学习一门计算机语言的时候,首先接触的入门程序基本上都是& ... -
Python3操作文件,目录和路径
2010-05-14 11:48 35081.遍历文件夹和文件 ... -
内存溢出
2010-04-22 14:23 1425java SE应用程序共同的问 ... -
JPA之ManyToMany的处理
2010-04-18 14:17 4513在处理关系中,最为麻烦的可能是多对多的关系处理,因为多对多 ... -
JPA之OneToOne关系处理
2010-04-18 14:05 3943在很早学习关系数据库的时候学过一对多,多对一,一对一,多对多的 ... -
JPA之OneToMany和ManyToOne处理
2010-04-18 13:52 18928前面介绍和总结了JPA ... -
JPA学习之二(入门篇)
2010-04-16 10:48 3762简单总结下,JPA的入门。在学习JPA的时候运用参考Hib ... -
JPA2.0的学习一
2010-04-15 17:18 8634Java EE 5平台引入了Java ...
相关推荐
以上就是一个基本的Java JDBC连接SQL Server的封装示例。通过这种方式,你可以轻松地在多个地方重用相同的连接逻辑,同时保持代码的整洁。记住,对于生产环境,最好使用连接池(如HikariCP、C3P0等)来管理和复用...
- `SqlServerConn`可能是一个针对SQL Server数据库的连接类,封装了JDBC连接和操作的方法。 - 可能包含如`getConnection()`获取数据库连接,`executeQuery(String sql, ResultSetHandler<T> handler)`执行查询并...
封装JDBC主要是对以上步骤进行抽象和封装,例如创建一个`DBUtil`类,提供以下功能: - 静态方法用于加载驱动和建立连接,如`getConnection(String url, String username, String password)`。 - 创建一个`...
JDBC是Java平台上的一个API,允许Java开发者与各种类型的数据库进行交互。它提供了一组接口和类,使得程序员可以编写数据库独立的代码,从而不必关心底层数据库的具体实现。 2. 基本CRUD操作: - 创建(Create)...
针对"JDBC数据操作封装",我们可以设计一个通用的DAO(Data Access Object)层,提供增删查改的接口。例如,一个简单的CRUD接口如下: ```java public interface Dao<T> { void insert(T entity); void update(T ...
在封装的JDBC代码中,可以设计一个方法读取这个文件,逐条执行其中的SQL,方便数据库的初始化和测试。 总结起来,对JDBC的封装是提高Java应用数据库操作效率和质量的关键步骤。通过引入连接池、使用...
封装一个方法接收SQL语句数组,一次性执行多个SQL。 10. **连接关闭**: 使用连接池时,不需要手动关闭连接,但在不使用连接池的情况下,需要确保在操作完成后关闭连接、Statement和ResultSet。 通过以上步骤,...
简单易用的数据库封装操作,包含数据库连接池的基本实现,数据库连接可重用,所有的操作都脱离源生JDBC操作,开发人员只需要熟悉Java集合的用法,会写Sql即可轻松的使用该封装好的JDBC API写出合理的代码。...
给学生讲课课上写的jdbc封装类,对基本的增删改查和事务做了封装。例子中用的是oracle 11g数据库,如果换其他数据库直接改连库字符串就行,其他的不用动,适合初学者学习。查询的时候会省掉很多工作量,不需要一个一...
4. 封装JDBC操作:创建一个数据库操作类,如`DBUtil`,提供获取连接、释放连接、执行SQL等方法。在获取连接时,从数据源中借用连接;执行完SQL后,将连接归还到数据源。 ```java public class DBUtil { private ...
code-access实现 是用access实现的,本意是access方便,就一个文件,方便部署。但access有好多不支持,就写成这样.主要是可参考Dao这一层的代码 JdbcUtils是jdbc封装的工具, JdbcCRUDUtils借助JdbcUtils实现对实体...
"JDBC封装方式"可能是包含上述封装策略的源代码文件,如`DBUtil.java`,`UserDAO.java`,`UserDAOImpl.java`等,这些文件共同构成了一个完整的JDBC封装体系。 通过以上介绍,我们可以理解JDBC封装是Java开发中提升...
本资源是对JDBC的封装,方便在项目中使用,其中BaseDao.java是对JDBC操作的封装,使用时让自己的Dao类继承即可,然后调用其中的executeQuery和executeOthe分别执行DQL和DML操作。dbinfo.properties属性文件存储基本...
本资源属于基本的JDBC操纵数据库增删改查代码的轻量型封装的实现,具体的使用过程大家可以参照以下博文的讲解: http://blog.csdn.net/songdeitao/article/details/17484635
对jdbc简单封装,实现基本增删改查,使用时请用编译器导入继承BaseDao类即可
在Java的数据库编程中,JDBC(Java Database Connectivity)是一个重要的接口,用于连接Java应用程序与各种类型的数据库。本文将深入探讨如何通过封装JDBC来提高数据库操作的效率,特别是使用Map数据结构实现快速的...
Statement接口是一个基本的接口,使用它可以执行不带参数的SQL语句。PreparedStatement接口是Statement接口的子接口,使用它可以执行带参数的SQL语句。CallableStatement接口是Statement接口的子接口,使用它可以...
本文档提供了一个使用 JDBC 连接 Oracle 11g 数据库的基本框架,并进行了初步的封装。虽然在实际应用中还需要进一步完善性能优化等方面的工作,但对于初学者来说,这已经是一个很好的起点。通过深入理解并扩展这个...
本压缩包“DB.rar_jdbc封装”显然是一个关于如何使用Java JDBC进行数据库连接封装的示例或教程。下面我们将详细探讨JDBC以及如何进行封装。 首先,JDBC是Java平台上的一个接口,它允许Java应用程序与各种数据库进行...
本示例“JDBC CRUD操作的粗略封装DEMO”提供了一个基础的JDBC操作数据库的代码实例,旨在简化常见的数据库操作流程。我们可以通过分析这个DEMO来学习如何利用JDBC进行数据处理。 首先,我们需要理解JDBC的基本步骤...