`
myzhijie
  • 浏览: 28043 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

简单封装JDBC操作类 适合初学者 不适合高级使用

 
阅读更多
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 用于JDBC操作
 * 
 * @author 沙琪玛
 */
public class ByteJDBC {
	private String driverName = "oracle.jdbc.driver.OracleDriver";
	private String url = "";
	private String userName = "";
	private String userPwd = "";

	/**
	 * 删除单条数据
	 * 
	 * @param tableName
	 *            表名
	 * @param idName
	 *            idName名称
	 * @param idValue
	 *            idValue值
	 */
	public void deleteById(String tableName, String idName, String idValue) {
		String sql = "delete from " + tableName + " where " + idName + "='"
				+ idValue + "'";
		doSQL(sql);
	}

	/**
	 * 执行SQL(查询) 并且返回生成结果集表格
	 * 
	 * @return String
	 */
	public String selectSQL(String selectSQL) {
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		// 用来存放查询的结果
		StringBuffer sb = new StringBuffer();
		try {
			// 加载驱动
			Class.forName(driverName);
			// 创建连接
			conn = DriverManager.getConnection(url, userName, userPwd);
			// 创建Statement
			st = conn.createStatement();
			// 执行sql语句,得到查询结果
			rs = st.executeQuery(selectSQL);
			// 输出查询结果
			int cloNum = rs.getMetaData().getColumnCount();
			sb.append("<tr class=\"th\">");
			for (int i = 0; i < cloNum; i++) {
				sb.append("<td>");
				sb.append(rs.getMetaData().getColumnName(i + 1));
				sb.append("</td>");
			}
			sb.append("</tr>");
			while (rs.next()) {
				sb.append("<tr>");
				for (int i = 0; i < cloNum; i++) {
					sb.append("<td>");
					sb.append(rs.getString(i + 1));
					sb.append("</td>");
				}
				sb.append("</tr>");
			}
			// 关闭资源
			rs.close();
			st.close();
			conn.close();

		} catch (Exception ex) {
			// 输出错误信息
			ex.printStackTrace();
		} finally {
			// finally子句总是会执行(就算发生错误),这样可以保证资源的绝对关闭
			try {
				if (rs != null)
					rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (st != null)
					st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (conn != null)
					conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}

		}
		return sb.toString();
	}

	/**
	 * 执行sql语句(修改、删除,插入)
	 */
	public void doSQL(String sqlStr) {
		Connection conn = null;
		Statement st = null;
		try {
			// 加载驱动
			Class.forName(driverName);
			// 创建连接
			conn = DriverManager.getConnection(url, userName, userPwd);
			// 创建Statement
			st = conn.createStatement();
			// 执行sql语句,得到查询结果
			st.execute(sqlStr);
			// 关闭资源
			st.close();
			conn.close();
		} catch (Exception ex) {
			// 输出错误信息
			ex.printStackTrace();
		} finally {
			// finally子句总是会执行(就算发生错误),这样可以保证资源的绝对关闭
			try {
				if (st != null)
					st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (conn != null)
					conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}
 
分享到:
评论
7 楼 jwx0925 2010-04-20  
tonyruiyu 写道
初学者真的不适合  误人子弟 

每次操作都会去创建CONNECTION  ,这非常要命

没有连接池 ,  没有反射,  没有动态代理  ,

什么都没有  刚毕业的都可能比这好,

我一大早上看个这贴  ..


确实很悲剧~
6 楼 tonyruiyu 2010-04-20  
初学者真的不适合  误人子弟 

每次操作都会去创建CONNECTION  ,这非常要命

没有连接池 ,  没有反射,  没有动态代理  ,

什么都没有  刚毕业的都可能比这好,

我一大早上看个这贴  ..
5 楼 waywin0512 2010-04-20  
vivia 写道
我是看到标题过来的,结果居然。。。。

我也是。。
4 楼 vivia 2010-04-20  
我是看到标题过来的,结果居然。。。。
3 楼 gwpking8419 2010-04-20  
雏......
2 楼 yunghe 2010-04-20  
一声叹息
1 楼 jsdit 2010-04-20  
建议将数据库建立连接和关闭资源分别写成两个方法。

相关推荐

    jdbcBaseDao

    JDBC技术帮助类,包含使用JDBC对数据库进行的增删改查操作的封装方法,适合初学者参考

    java初学者必看

    5.4 StringBuffer类操作 5.4.1 基本操作 5.4.2 字符串操作方法 5.4.3 添加append() 5.4.4 插入insert() 5.5 实例:字符串应用 5.6 本章习题 第6章 数组 6.1 一维数组 6.1.1 数组的概念 6.1.2 一维数组的...

    JDBC更新+数据库连接池–详解–初学者必看

    JDBC+连接池–值得一看JDBC的使用增删改查操作JDBC工具类的封装JDBC实现新增数据-插入-insertJDBC实现修改数据-更新–updateJDBC实现删除数据-删除—deleteJDBC实现查询数据-查询—select案例:实现用户登录案例:...

    Java初学者入门教学

    5.2.3 private:不能接触 5.2.4 protected:“友好的一种” 5.3 接口与实现 5.4 类访问 5.5 总结 5.6 练习 第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的...

    JdbcUtil.java

    一个已经封装了连接池(可以自定义连接池大小)的jdbc工具类,代码简单清晰,适合java初学者,以便更好更快的熟悉数据库操作。

    开发一个考生录取查询系统的详细步骤和代码,帮助初学者体验开发系统的过程

    考生录取查询系统是一个教育单位不可缺少的部分,它的内容对学校的决策者和管理者来说都至关重 要,所以考生录取查询系统应该能够为用户提供充足的信息和快捷的查询手段。 通过本系统,考生可输入姓名和准考证号进行...

    Java基础(韩顺平版)笔记详

    面向对象编程:类和对象、继承、封装、多态 异常处理机制 集合框架:List、Set、Map等 输入输出(I/O):文件操作 多线程和并发编程基础 Java基础类库:实用工具类和日期时间API JDBC数据库操作 适用人群 计算机专业...

    一个简单实用的数据库操作框架

    我把源码提供出来有两个目的一个是希望能帮助比我还初学的初学者熟悉JDBC,另外就是请各位高手不吝赐教,改进程序中的错误如果能将你们的对JDBC的封装方法提供出来那就更好了(不要说你们只用EJB或者Hibernate,JDO...

    Java 学习笔记极其详细版(包括一些个人色彩不仅仅是纯笔记)

    内容概要 本Jva(Java)学习笔记是一份深入且详尽的...Java初学者:希望从零开始学习Java编程的新手。 在校大学生:计算机科学或相关专业,需要深入理解Java语言。 自学编程爱好者:通过自学提升Java技能的个人。 初级

    疯狂JAVA讲义

    1.6.3 初学者容易犯的错误 18 1.7 垃圾回收机制 20 1.8 何时开始使用IDE工具 21 学生提问:老师,我想学习Java编程,到底是学习Eclipse好呢,还是学习JBuilder好呢? 21 1.9 本章小结 22 本章练习 22 第2章 ...

    二十三种设计模式【PDF版】

    一个熟悉这些模式的设计者不需要再去发现它们,而能够立即将它们应用于设计问题中。以下类比可以帮助说明这一点。 小说家和剧本作家很少从头开始设计剧情。他们总是沿袭一些业已存在的模式,像“悲剧性英雄”模式(...

    21天学通Java-由浅入深

    图文并茂很适合初学着学习 下面是课程的目录: 第一篇 基础篇 第1章 Java简介(精彩视频:33分钟) 21 1.1 Java的平台简介 21 1.2 安装工具包 22 1.2.1 下载JDK 22 1.2.2 安装JDK 24 1.2.3 查看与设置环境变量 25 ...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式...

    JAVA上百实例源码以及开源项目

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

Global site tag (gtag.js) - Google Analytics