- 浏览: 741023 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (396)
- JAVA (50)
- ORACLE (22)
- HIBERNATE (1)
- SPRING (26)
- STRUTS (4)
- OTHERS (0)
- MYSQL (11)
- Struts2 (16)
- JS (33)
- Tomcat (6)
- DWR (1)
- JQuery (26)
- JBoss (0)
- SQL SERVER (0)
- XML (10)
- 生活 (3)
- JSP (11)
- CSS (5)
- word (1)
- MyEclipse (7)
- JSTL (1)
- JEECMS (2)
- Freemarker (8)
- 页面特效 (1)
- EXT (2)
- Web前端 js库 (2)
- JSON http://www.json.org (3)
- 代码收集 (1)
- 电脑常识 (6)
- MD5加密 (0)
- Axis (0)
- Grails (1)
- 浏览器 (1)
- js调试工具 (1)
- WEB前端 (5)
- JDBC (2)
- PowerDesigner (1)
- OperaMasks (1)
- CMS (1)
- Java开源大全 (2)
- 分页 (28)
- Eclipse插件 (1)
- Proxool (1)
- Jad (1)
- Java反编译 (2)
- 报表 (6)
- JSON (14)
- FCKeditor (9)
- SVN (1)
- ACCESS (1)
- 正则表达式 (3)
- 数据库 (1)
- Flex (3)
- pinyin4j (2)
- IBATIS (3)
- probe (1)
- JSP & Servlet (1)
- 飞信 (0)
- AjaxSwing (0)
- AjaxSwing (0)
- Grid相关 (1)
- HTML (5)
- Guice (4)
- Warp framework (1)
- warp-persist (1)
- 服务器推送 (3)
- eclipse (1)
- JForum (5)
- 工具 (1)
- Python (1)
- Ruby (1)
- SVG (3)
- Joda-Time日期时间工具 (1)
- JDK (3)
- Pushlet (2)
- JSP & Servlet & FTP (1)
- FTP (6)
- 时间与效率 (4)
- 二维码 (1)
- 条码/二维码 (1)
最新评论
-
ctrlc:
你这是从web服务器上传到FTP服务器上的吧,能从用户电脑上上 ...
jsp 往 FTP 上传文件问题 -
annybz:
说的好抽象 为什么代码都有两遍。这个感觉没有第一篇 和第二篇 ...
Spring源代码解析(三):Spring JDBC -
annybz:
...
Spring源代码解析(一):IOC容器 -
jie_20:
你确定你有这样配置做过测试? 请不要转载一些自己没有测试的文档 ...
Spring2.0集成iReport报表技术概述 -
asd51731:
大哥,limit传-1时出错啊,怎么修改啊?
mysql limit 使用方法
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.OracleTypes;
import oracle.jdbc.rowset.OracleCachedRowSet;
/**
* @author hucl
*
*
*/
public abstract class OracleHelper {
/**
* @param String cmdtext,SQL语句
* @param OracleParameter[] parms,参数集合
* @return int,SQL语句影响的行数
*/
public static int executeSql(String cmdtext, OracleParameter[] parms)
throws Exception {
PreparedStatement pstmt = null;
Connection conn = null;
try {
conn = ConnectMgr.getConnect();
pstmt = conn.prepareStatement(cmdtext);
prepareCommand(pstmt, parms);
return pstmt.executeUpdate();
}
catch (Exception e) {
throw new Exception("executeNonQuery方法出错:" + e.getMessage());
}
finally {
try {
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
}
catch (Exception e) {
throw new Exception("执行executeNonQuery方法出错:" + e.getMessage());
}
}
}
/**
*
* @param cmdtext
* @param parms
* @return int[] 多条SQL的影响行数
* @throws Exception
*/
public static int[] executeSqlBatch(String cmdtext, Object[] parms)
throws Exception {
PreparedStatement pstmt = null;
Connection conn = null;
try {
conn = ConnectMgr.getConnect();
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(cmdtext);
prepareCommand(pstmt, parms);
int[] ret = pstmt.executeBatch();
conn.commit();
return ret;
}
catch (Exception e) {
conn.rollback();
throw new Exception("执行executeSqlBatch方法出错:" + e.getMessage());
}
finally {
try {
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
}
catch (Exception e) {
throw new Exception("执行executeSqlBatch方法出错:" + e.getMessage());
}
}
}
/**
*
* @param cmdtext
* @param parms
* @return ResultSet
* @throws Exception
*/
public static ResultSet executeSqlResultSet(String cmdtext,
OracleParameter[] parms) throws Exception {
PreparedStatement pstmt = null;
Connection conn = null;
try {
conn = ConnectMgr.getConnect();
pstmt = conn.prepareStatement(cmdtext);
prepareCommand(pstmt, parms);
return pstmt.executeQuery();
}
catch (Exception e) {
throw new Exception("executeSqlResultSet方法出错:" + e.getMessage());
}
finally {
try {
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
}
catch (Exception e) {
throw new Exception("executeSqlResultSet方法出错:" + e.getMessage());
}
}
}
/**
*
* @param sptext 存储过程语句
* @param parms OracleParameter[]
* @return boolean 成功为true,失败为false
* @throws Exception
*/
public static boolean executeProcedure(String sptext, OracleParameter[] parms)
throws Exception {
Connection conn = null;
CallableStatement cstmt = null;
try {
conn = ConnectMgr.getConnect();
conn.setAutoCommit(true);
cstmt = conn.prepareCall(sptext);
prepareCommand(cstmt, parms);
return cstmt.execute();
}
catch (Exception e) {
throw new Exception("executeProcedure方法出错:" + e.getMessage());
}
finally {
try {
if (cstmt != null)
cstmt.close();
if (conn != null)
conn.close();
}
catch (Exception e) {
throw new Exception("执行executeProcedure方法出错:" + e.getMessage());
}
}
}
/**
*
* @param sptext 存储过程语句
* @param parms OracleParameter[]
* @return Object[] 出参的结果
* @throws Exception
*/
public static Object[] executeProcedureObject(String sptext,
OracleParameter[] parms) throws Exception {
Connection conn = null;
CallableStatement cstmt = null;
try {
conn = ConnectMgr.getConnect();
cstmt = conn.prepareCall(sptext);
//应用参数
prepareCommand(cstmt, parms);
cstmt.execute();
int count = parms.length;
Object[] result = new Object[count];
for (int i = 0; i < count; i++) {
//判断是否有出参
if (parms[i].getInorout().compareToIgnoreCase("OUT") >= 0) {
/*判断是否是结果集,如果不是结果集,直接加到数组中;
*如果是结果集执行else下的语句,把结果集写到OracleCachedRowSet中,ResultSet的关闭不会受到影响
*原因:如果直接传ResultSet,
*在执行finally语句时会连同ResultSet一同关闭,
*在其他地方没法正确读出结果集
*/
if (parms[i].getType() != OracleTypes.CURSOR) {
result[i] = cstmt.getObject(parms[i].getIndex());
}
else {
OracleCachedRowSet ocrs = new OracleCachedRowSet();
ResultSet rs = null;
//取出ResutltSet对象
rs = (ResultSet)(cstmt.getObject(parms[i].getIndex()));
//写到OracleCachedRowSet对象
ocrs.populate(rs);
//关闭ResultSet
rs.close();
//把对象添加到数组
result[i] = (Object)ocrs;
}
//判断结束
}
else {
; //如果不是出参,执行下次循环
}
}
return result;
}
catch (Exception e) {
throw new Exception("executeProcedureObject方法出错:" + e.getMessage());
}
finally {
try {
if (cstmt != null)
cstmt.close();
if (conn != null)
conn.close();
}
catch (Exception e) {
throw new Exception("executeProcedureObject方法出错:" + e.getMessage());
}
}
}
/**
*
* @param cmdtext SQL语句
* @param name 列名
* @param parms OracleParameter[]
* @return Object
* @throws Exception
*/
public static Object executeSqlObject(String cmdtext, String name,
OracleParameter[] parms) throws Exception {
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
try {
conn = ConnectMgr.getConnect();
pstmt = conn.prepareStatement(cmdtext);
prepareCommand(pstmt, parms);
rs = pstmt.executeQuery();
if (rs.next()) {
return rs.getObject(name);
}
else {
return null;
}
}
catch (Exception e) {
throw new Exception("executeSqlObject方法出错:" + e.getMessage());
}
finally {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
}
catch (Exception e) {
throw new Exception("executeSqlObject方法出错:" + e.getMessage());
}
}
}
/**
*
* @param cmdtext SQL语句
* @param index 列名索引
* @param parms OracleParameter[]
* @return Object
* @throws Exception
*/
public static Object executeSqlObject(String cmdtext, int index,
OracleParameter[] parms) throws Exception {
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
try {
conn = ConnectMgr.getConnect();
pstmt = conn.prepareStatement(cmdtext);
prepareCommand(pstmt, parms);
rs = pstmt.executeQuery();
if (rs.next()) {
return rs.getObject(index);
}
else {
return null;
}
}
catch (Exception e) {
throw new Exception("executeSqlObject方法出错:" + e.getMessage());
}
finally {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
}
catch (Exception e) {
throw new Exception("executeSqlObject方法出错:" + e.getMessage());
}
}
}
/**
* @param pstmt
* @param cmdtext
* @param parms Object[]
* @throws Exception
*/
private static void prepareCommand(PreparedStatement pstmt, Object[] parms)
throws Exception {
int count = parms.length;
for (int i = 0; i < count; i++) {
OracleParameter[] op;
op = (OracleParameter[]) parms[i];
prepareCommand(pstmt, op);
pstmt.addBatch();
}
}
/**
*
* @param pstmt
* @param parms
* @throws Exception
*/
private static void prepareCommand(PreparedStatement pstmt,
OracleParameter[] parms) throws Exception {
if (parms == null) {
return;
}
int count;
count = parms.length;
for (int i = 0; i < count; i++) {
OracleParameter op = new OracleParameter();
op = parms[i];
pstmt.setObject(op.getIndex(), op.getValue());
}
}
/**
*
* @param cstmt
* @param parms
* @throws Exception
*/
private static void prepareCommand(CallableStatement cstmt,
OracleParameter[] parms) throws Exception {
if (parms == null) {
return;
}
int count;
count = parms.length;
try {
for (int i = 0; i < count; i++) {
OracleParameter op = new OracleParameter();
op = parms[i];
if (op.getInorout().compareToIgnoreCase("OUT") >= 0)
cstmt.registerOutParameter(op.getIndex(), op.getType());
else
cstmt.setObject(op.getIndex(), op.getValue());
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] args) throws Exception {
/*
//测试1
OracleParameter[] parms;
parms = new OracleParameter[] {
new OracleParameter(1,"4")
};
OracleHelper.executeNonQuery(1,"insert into SYS_CONFIG(name) values(?)",parms);
//测试2
Object[] parms;
OracleParameter[] op1;
op1 = new OracleParameter[] {
new OracleParameter(1,"4")
};
OracleParameter[] op2;
op2 = new OracleParameter[] {
new OracleParameter(1,"5")
};
OracleParameter[] op3;
op3 = new OracleParameter[] {
new OracleParameter(1,"6")
};
parms = new Object[] {
op1,op2,op3
};
String sql = "insert into SYS_CONFIG(NAME) VALUES(?)";
OracleHelper.executeNonQuery(sql,parms);
//测试3
Object o = OracleHelper.executeSqlObject("select name from SYS_CONFIG ","name",null);
System.out.println(o);
//测试4
Object[] o;
OracleParameter[] parms;
parms = new OracleParameter[] {
new OracleParameter(1, "1"),
new OracleParameter(2, java.sql.Types.VARCHAR)
};
o = OracleHelper.executeProcedureObject(
"{call USP_SYS_CONFIG_GETVALUE(?,?)}", parms);
if (o != null) {
System.out.println(o[1].toString());
}
else {
System.out.println("null");
}
*/
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/utilities/archive/2005/12/21/557924.aspx
相关推荐
用了很多年的asp.net SQLHelper,封装的方法绝对够用,工作中一直在用
结合我帖子 VB.NET SQLHelper 类使用
ADO.NET自己封装SqlHelper类 1、简单封装 2、传递参数封装 3、参数可变封装
ADO.NET中简单实用的三种方法,并将其进行封装,便于操作者进行开发与使用。
使用SqlHelper查询数据库记录 编程小实例,C++.net源代码编写
C#中oracle连接数据库的封装类,有简短的说明
.Net Framework 数据提供程序[有四个核心对象]:只进、只读访问数据 Connection Command DataReader DataAdapter 只进:是指对于查询处的结果,只能前进,不能后退。例如:前进到了第3条结果,...
VB.NET实现SqlHelper数据库操作组件,组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数...
使用SqlHelper增加数据库记录 编程小实例,C++.net源代码编写
VB.Net版的SqlHelper,希望对大家有用!
通过jdbc的方式访问数据库: 1.程序是整理的韩顺平oracle教学视频中的一个例子。 2.假设本机安装了oracle...4.程序对数据库操作进行了一定程度的封装,封装函数放在SQLHelper类中,在TestOracleCrud中对函数进行测试。
asp.net 连接sql server 工具类,我也不想要资源分数,但没有0分选项
NULL 博文链接:https://zhaoxuewei2012.iteye.com/blog/1612229
C# 链接Oracle数据库操作类 SqlHelper.cs,.NET3.0以上即可使用,涵盖了oracle数据库的增删改查操作,并可调用存储过程,因是源码,可根据自己实际需要再修改,灵活性较大
如果不使用数据访问层,那么你的代码里会出现很多SqlConnection、SqlCommand、SqlDataReader、Open、 Close……这些类和方法,而且代码量很大,让你不胜其烦,而且代码写起来,其实都是体力活,没有技术含量。...
Visual C++源代码 114 如何使用SqlHelper查询数据库记录Visual C++源代码 114 如何使用SqlHelper查询数据库记录Visual C++源代码 114 如何使用SqlHelper查询数据库记录Visual C++源代码 114 如何使用SqlHelper查询...
强大的SqlHelper
/// 数据库的通用访问代码 /// 此类为抽象类,不允许实例化,在应用时直接调用即可 /// public abstract class SqlHelper { //获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能...
ADO.NET实例操作数据库SQLSERVER。
Visual C++源代码 115 如何使用SqlHelper增加数据库记录Visual C++源代码 115 如何使用SqlHelper增加数据库记录Visual C++源代码 115 如何使用SqlHelper增加数据库记录Visual C++源代码 115 如何使用SqlHelper增加...