- 浏览: 507233 次
- 性别:
- 来自: 山东
-
文章分类
最新评论
-
wjpiao:
...
HttpClient4模拟登录回贴 -
spring_springmvc:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
Maven-pom.xml -Dependency Scope 区别 -
7454103:
京东通信此次推出的特权卡名为“自由行”,主打无套餐、无合约、无 ...
判断手机号码是否合法--正则 -
di1984HIT:
谢谢啊~学习了~
Maven Nexus 管理员密码重置 -
BigCat2013:
XMLFileUtil.getAttributeValue() ...
java调用sql XML配置文件 笔记
java同时调用oracle和db2数据库存储过程:添加,修改,删除,查询的处理方法
在java开发过程中,经常会遇到调用存储过程,有时用调用oracle数据库,有时调用db2数据库。。。。那么如何同时在一个项目中调用两种不同的大型数据库呢????
以下代码是我以前做的项目中用到的同时调用oracle和db2数据库:添加,修改,删除,查询的处理方法,以供大家用时间做为参考,
如有不同的意见,请说明下,谢谢
package com.jbeduhai.util;
import java.sql.*;
import java.util.*;
import oracle.jdbc.OracleTypes;
import com.bstek.dorado.common.DoradoContext;
import com.bstek.dorado.common.MessageHelper;
import com.bstek.dorado.common.ds.ConnectionHelper;
import com.jbeduhai.base.jbeduhaiMsg;
public class jbeduhaiTemplate {
private String flag = "0";
private String retMsg = "";
private Connection conn = null;
private CallableStatement stored_p = null;
private ResultSet rs = null;
private String dialect = null;
private String dbsql = null;
private String dbflag = "0";
private int intflag = 0;
private String oracle = "Oracle";
private String db2 = "DB2";
private jbeduhaiMsg msg = null;
public List query(String sql, Object objs[], jbeduhaiMapper mapper)
throws Exception {
this.getDialect(sql);
System.out.println("sql================>>>" + "{call " + dbsql + "}");
conn = this.getConnection();
stored_p = conn.prepareCall("{call " + dbsql + "}");
for (int i = 0; i < objs.length; i++) {
if (objs[i] == null) {
objs[i] = "";
}
if ("".equals(objs[i])) {
stored_p.setString(i + 1, null);
} else {
stored_p.setObject(i + 1, objs[i]);
}
System.out.println("params" + i + "================>>>:" + objs[i]);
}
stored_p.registerOutParameter(objs.length + 1, Types.CHAR);
stored_p.registerOutParameter(objs.length + 2, Types.CHAR);
if (dbflag == "1" || dbflag.equals("1")) {
stored_p.registerOutParameter(objs.length + 3, OracleTypes.CURSOR);
}
stored_p.execute();
flag = stored_p.getString(objs.length + 1);
retMsg = stored_p.getString(objs.length + 2);
if (!flag.equals("0")) {
// throw new Exception(retMsg);
MessageHelper.addMessage(DoradoContext.getContext(), "flag",flag);
MessageHelper.addMessage(DoradoContext.getContext(), "retMsg",retMsg);
return null;
}
if (dbflag == "1" || dbflag.equals("1")) {
rs = (ResultSet) stored_p.getObject(objs.length + 3);
}
if (dbflag == "2" || dbflag.equals("2")) {
rs = stored_p.getResultSet();
}
if (rs == null || rs.equals("")) {
return null;
}
List list = new ArrayList();
try {
while (rs.next()) {
Object obj = mapper.processResult(rs);
list.add(obj);
}
} finally {
this.closeConnection();
}
return list;
}
/**
* 取过程最后一个输出参数为字符串的方法
*
* @param sql
* @param objs
* @return
* @throws Exception
*/
public jbeduhaiMsg query1(String sql, Object objs[]) throws Exception {
msg = new jbeduhaiMsg();
int fg;
// this.getDialect(sql);
String dbsql = sql;
System.out.println("sql================>>>" + "{call " + dbsql + "}");
conn = this.getConnection();
stored_p = conn.prepareCall("{call " + dbsql + "}");
for (int i = 0; i < objs.length; i++) {
if (objs[i] == null) {
objs[i] = "";
}
if ("".equals(objs[i])) {
stored_p.setString(i + 1, null);
} else {
stored_p.setObject(i + 1, objs[i]);
}
System.out.println("params" + i + "================>>>:" + objs[i]);
}
stored_p.registerOutParameter(objs.length + 1, Types.CHAR);
stored_p.registerOutParameter(objs.length + 2, Types.CHAR);
stored_p.registerOutParameter(objs.length + 3, Types.CHAR);
stored_p.execute();
fg = stored_p.getInt(objs.length + 1);
// String retMsg = stored_p.getString(objs.length + 2);
String resultSet = stored_p.getString(objs.length + 3);
msg.setCode(fg);
msg.setMessage(resultSet);
if (!flag.equals("0")) {
return null;
}
try {
// stored_p.close();
} finally {
this.closeConnection();
}
return msg;
}
/**
* 取过程最后一个输出参数为字符串的方法 输出参数为4个
*
* @param sql
* @param objs
* @return
* @throws Exception
*/
public jbeduhaiMsg queryOut4(String sql, Object objs[]) throws Exception {
msg = new jbeduhaiMsg();
int fg;
// this.getDialect(sql);
String dbsql = sql;
System.out.println("sql================>>>" + "{call " + dbsql + "}");
conn = this.getConnection();
stored_p = conn.prepareCall("{call " + dbsql + "}");
for (int i = 0; i < objs.length; i++) {
if (objs[i] == null) {
objs[i] = "";
}
if ("".equals(objs[i])) {
stored_p.setString(i + 1, null);
} else {
stored_p.setObject(i + 1, objs[i]);
}
System.out.println("params" + i + "================>>>:" + objs[i]);
}
stored_p.registerOutParameter(objs.length + 1, Types.CHAR);
stored_p.registerOutParameter(objs.length + 2, Types.CHAR);
stored_p.registerOutParameter(objs.length + 3, Types.CHAR);
stored_p.registerOutParameter(objs.length + 4, Types.CHAR);
stored_p.execute();
fg = stored_p.getInt(objs.length + 1);
// String retMsg = stored_p.getString(objs.length + 2);
String resultSet = stored_p.getString(objs.length + 3);
// String resultSetName = stored_p.getString(objs.length + 4);
msg.setCode(fg);
msg.setMessage(resultSet);
if (!flag.equals("0")) {
return null;
}
try {
// stored_p.close();
} finally {
this.closeConnection();
}
return msg;
}
/*
*
* 取过程最后一个输出参数为字符串的方法 方法名:query1 sql :调用的过程SQL objs[] :传入的输入参数' mapper :
*/
public List query1(String sql, Object objs[], jbeduhaiMapper mapper)
throws Exception {
// this.getDialect(sql);
String dbsql = sql;
System.out.println("sql================>>>" + "{call " + dbsql + "}");
conn = this.getConnection();
stored_p = conn.prepareCall("{call " + dbsql + "}");
for (int i = 0; i < objs.length; i++) {
if (objs[i] == null) {
objs[i] = "";
}
if ("".equals(objs[i])) {
stored_p.setString(i + 1, null);
} else {
stored_p.setObject(i + 1, objs[i]);
}
System.out.println("params" + i + "================>>>:" + objs[i]);
}
stored_p.registerOutParameter(objs.length + 1, Types.CHAR);
stored_p.registerOutParameter(objs.length + 2, Types.CHAR);
stored_p.registerOutParameter(objs.length + 3, Types.CHAR);
stored_p.execute();
flag = stored_p.getString(objs.length + 1);
String msgg = stored_p.getString(objs.length + 3);
System.out.println(msgg);
List list = new ArrayList();
list.add(msgg);
if (!flag.equals("0")) {
return null;
}
try {
// stored_p.close();
} finally {
this.closeConnection();
}
return list;
}
/*
*
* 取过程第二个输出参数为Number的方法 方法名:query2 sql :调用的过程SQL objs[]
*
*/
public int query2Para(String sql, Object objs[])
throws Exception {
// this.getDialect(sql);
int seqNo = 0;
String dbsql = sql;
System.out.println("sql================>>>" + "{call " + dbsql + "}");
conn = this.getConnection();
stored_p = conn.prepareCall("{call " + dbsql + "}");
for (int i = 0; i < objs.length; i++) {
if (objs[i] == null) {
objs[i] = "";
}
if ("".equals(objs[i])) {
stored_p.setString(i + 1, null);
} else {
stored_p.setObject(i + 1, objs[i]);
}
System.out.println("params" + i + "================>>>:" + objs[i]);
}
stored_p.registerOutParameter(objs.length + 1, Types.CHAR);
stored_p.registerOutParameter(objs.length + 2, Types.CHAR);
stored_p.registerOutParameter(objs.length + 3, Types.CHAR);
stored_p.execute();
seqNo = stored_p.getInt(objs.length + 1);
System.out.println(flag);
flag = stored_p.getString(objs.length + 2);
System.out.println(seqNo);
String msgg = stored_p.getString(objs.length + 3);
System.out.println(msgg);
if (!flag.equals("0")) {
return 0;
}
try {
// stored_p.close();
} finally {
this.closeConnection();
}
return seqNo;
}
/**
* 取过程倒数第三个输出参数为字符串的方法
*
* @param sql
* @param objs
* @return
* @throws Exception
*/
public jbeduhaiMsg query3(String sql, Object objs[]) throws Exception {
msg = new jbeduhaiMsg();
int fg;
// this.getDialect(sql);
String dbsql = sql;
System.out.println("sql================>>>" + "{call " + dbsql + "}");
conn = this.getConnection();
stored_p = conn.prepareCall("{call " + dbsql + "}");
for (int i = 0; i < objs.length; i++) {
if (objs[i] == null) {
objs[i] = "";
}
if ("".equals(objs[i])) {
stored_p.setString(i + 1, null);
} else {
stored_p.setObject(i + 1, objs[i]);
}
System.out.println("params" + i + "================>>>:" + objs[i]);
}
stored_p.registerOutParameter(objs.length + 1, Types.CHAR);
stored_p.registerOutParameter(objs.length + 2, Types.CHAR);
stored_p.registerOutParameter(objs.length + 3, Types.CHAR);
stored_p.execute();
String resultSet = stored_p.getString(objs.length + 1);
fg = stored_p.getInt(objs.length + 2);
String retMsg = stored_p.getString(objs.length + 3);
msg.setCode(fg);
msg.setMessage(retMsg);
msg.setOutString(resultSet);
if (!flag.equals("0")) {
return null;
}
try {
// stored_p.close();
} finally {
this.closeConnection();
}
return msg;
}
/**
* 取过程第三个输出参数为字符串的方法
*
* @param sql
* @param objs
* @return
* @throws Exception
*/
public jbeduhaiMsg queryout3(String sql, Object objs[]) throws Exception {
msg = new jbeduhaiMsg();
int fg;
// this.getDialect(sql);
String dbsql = sql;
System.out.println("sql================>>>" + "{call " + dbsql + "}");
conn = this.getConnection();
stored_p = conn.prepareCall("{call " + dbsql + "}");
for (int i = 0; i < objs.length; i++) {
if (objs[i] == null) {
objs[i] = "";
}
if ("".equals(objs[i])) {
stored_p.setString(i + 1, null);
} else {
stored_p.setObject(i + 1, objs[i]);
}
System.out.println("params" + i + "================>>>:" + objs[i]);
}
stored_p.registerOutParameter(objs.length + 1, Types.CHAR);
stored_p.registerOutParameter(objs.length + 2, Types.CHAR);
stored_p.registerOutParameter(objs.length + 3, Types.CHAR);
stored_p.execute();
fg = stored_p.getInt(objs.length + 1);
String retMsg = stored_p.getString(objs.length + 2);
String status = stored_p.getString(objs.length + 3);
msg.setCode(fg);
msg.setMessage(retMsg);
msg.setOutString(status);
if (!flag.equals("0")) {
return null;
}
try {
// stored_p.close();
} finally {
this.closeConnection();
}
return msg;
}
public jbeduhaiMsg update(String sql, Object objs[]) throws Exception {
int flag = 0;
String dbsql = sql;
msg = new jbeduhaiMsg();
System.out.println("sql================>>>" + "{call " + dbsql + "}");
conn = this.getConnection();
conn.setAutoCommit(false);
try {
stored_p = conn.prepareCall("{call " + dbsql + "}");
for (int i = 0; i < objs.length; i++) {
if (objs[i] == null) {
objs[i] = "";
}
if ("".equals(objs[i])) {
stored_p.setString(i + 1, null);
} else {
stored_p.setObject(i + 1, objs[i]);
}
System.out.println("params" + i + "================>>>:"
+ objs[i]);
}
stored_p.registerOutParameter(objs.length + 1, Types.CHAR);
stored_p.registerOutParameter(objs.length + 2, Types.CHAR);
stored_p.execute();
flag = stored_p.getInt(objs.length + 1);
retMsg = stored_p.getString(objs.length + 2);
if (flag != 0)
conn.rollback();
else
conn.commit();
msg.setCode(flag);
msg.setMessage(retMsg);
} finally {
this.closeConnection();
}
return msg;
}
/*
* 查询,第三个参数为游标
*/
public List queryOther(String sql, Object objs[], jbeduhaiMapper mapper)
throws Exception {
this.getDialect(sql);
System.out.println("sql================>>>" + "{call " + dbsql + "}");
conn = this.getConnection();
stored_p = conn.prepareCall("{call " + dbsql + "}");
stored_p.registerOutParameter(1, Types.CHAR);
stored_p.registerOutParameter(2, Types.CHAR);
if (dbflag == "1" || dbflag.equals("1")) {
stored_p.registerOutParameter(3, OracleTypes.CURSOR);
}
for (int i = 0; i < objs.length; i++) {
if (objs[i] == null) {
objs[i] = "";
}
if ("".equals(objs[i])) {
if (dbflag == "1" || dbflag.equals("1")) {
stored_p.setString(i + 4, null);
}
if (dbflag == "2" || dbflag.equals("2")) {
stored_p.setObject(i + 3, objs[i]);
}
} else {
if (dbflag == "1" || dbflag.equals("1")) {
stored_p.setObject(i + 4, objs[i]);
}
if (dbflag == "2" || dbflag.equals("2")) {
stored_p.setObject(i + 3, objs[i]);
}
}
System.out.println("params" + i + "================>>>:" + objs[i]);
}
stored_p.execute();
flag = stored_p.getString(1);
retMsg = stored_p.getString(2);
if (!flag.equals("0")) {
// throw new Exception(retMsg);
MessageHelper.addMessage(DoradoContext.getContext(), retMsg);
}
if (dbflag == "1" || dbflag.equals("1")) {
rs = (ResultSet) stored_p.getObject(3);
}
if (dbflag == "2" || dbflag.equals("2")) {
rs = stored_p.getResultSet();
}
if (rs == null || rs.equals("")) {
return null;
}
List list = new ArrayList();
try {
while (rs.next()) {
Object obj = mapper.processResult(rs);
list.add(obj);
}
// stored_p.close();
} finally {
this.closeConnection();
}
return list;
}
/**
*
* @param sql
* @param objs
* @return
* @throws Exception
*/
public jbeduhaiMsg updateOther(String sql, Object objs[]) throws Exception {
int flag = 0;
String dbsql = sql;
msg = new jbeduhaiMsg();
System.out.println("sql================>>>" + "{call " + dbsql + "}");
conn = this.getConnection();
conn.setAutoCommit(false);
try {
stored_p = conn.prepareCall("{call " + dbsql + "}");
stored_p.registerOutParameter(1, Types.CHAR);
stored_p.registerOutParameter(2, Types.CHAR);
for (int i = 0; i < objs.length; i++) {
if (objs[i] == null) {
objs[i] = "";
}
if ("".equals(objs[i])) {
stored_p.setString(i + 3, null);
} else {
stored_p.setObject(i + 3, objs[i]);
}
System.out.println("params" + i + "================>>>:"
+ objs[i]);
}
stored_p.execute();
flag = stored_p.getInt(1);
retMsg = stored_p.getString(2);
if (flag != 0)
conn.rollback();
else
conn.commit();
msg.setCode(flag);
msg.setMessage(retMsg);
// stored_p.close();
} finally {
this.closeConnection();
}
return msg;
}
public Connection getConnection() throws Exception {
conn = ConnectionHelper.getDefaultConnection();
return conn;
}
public void closeConnection() throws Exception {
stored_p.close();
conn.close();
}
public void getDialect(String sql) {
dialect = ConnectionHelper.getDefaultDialect().toString();
System.out.println("dialect================>>>" + dialect);
intflag = dialect.indexOf(oracle);
if (intflag > 0) {
dbflag = "1";
dbsql = sql;
System.out.println("DataSource================>>>" + oracle);
}
intflag = dialect.indexOf(db2);
if (intflag > 0) {
dbflag = "2";
dbsql = sql.substring(0, sql.length()-3)+")";
//dbsql = sql.replace("(?,", "(");
System.out.println("DataSource================>>>" + db2);
}
}
}
如果有遇到这样的问题解决不了了,
QQ:15900487756
EMail:jbeduhai@126.com 大家可以共论一下...
发表评论
-
easyui combobox下拉效果 可输入 模糊查询
2015-12-24 13:03 18219<link rel="stylesheet&q ... -
字符串编码生成实现
2015-08-06 09:28 855//为长度为22的字符串 编码生成实现 //格式:XAAA ... -
eclipse设置默认指向/src/main/webapp目录
2015-02-11 09:28 3507改配置文件, 打开.setting 文件夹下的 org.ecl ... -
判断手机号码是否合法--正则
2014-10-30 16:26 1752import java.util.regex.Matc ... -
JAVA集合
2014-09-30 13:04 708ArrayList和LinkedList区别 1.Ar ... -
乱码???
2014-09-12 16:57 1003http://blog.csdn.net/youyue/art ... -
APACHE+TOMCAT配置负载均衡
2014-09-09 09:37 1331目标: 使用 apache 和 tomcat 配置一个可以应 ... -
日期格式化取月日
2014-08-13 14:18 873日期格式化 SimpleDateFormat sdf = n ... -
java实现获取各种浏览器版本号及类型
2014-07-22 13:28 4666引用public Map<String,String&g ... -
两个数的百分比
2014-02-25 11:50 1061public static void main(String[ ... -
java补全
2014-02-21 13:27 1018import java.text.NumberFormat; ... -
oracle日期相减
2014-02-12 16:43 1542oracle日期相减 --MONTHS_BETWEEN(dat ... -
PermGen space及其解决方法
2014-01-23 10:00 1248-Xms256m -Xmx1024m -XX:PermSize ... -
webservcie-wsimport
2013-08-30 12:32 828wsimport wsimport是在JDK的bin目录下的 ... -
tomcat服务启动取IP4地址设置
2013-06-17 15:59 13281.Open launch configuration 2. ... -
Windows反向代理安装配置(双机)笔记
2013-06-07 09:05 3364引用 下载 httpd-2.2.22-win32-x86-no ... -
Maven-pom.xml -Dependency Scope 区别
2013-06-06 09:38 6106如下图报错,找错 1. 找 ... -
webservice调用异常
2013-06-03 16:27 1311Exception in thread "mai ... -
spring防止内存泄露配置
2013-05-07 15:43 897<!-- Spring 刷新Introspector ... -
删除字符串中带中文的指定字符
2013-04-23 08:50 1107public class Test { /** ...
相关推荐
在IT行业中,数据库是存储和管理数据的核心工具。Oracle、DB2和MySQL是三种非常流行的数据库管理系统,广泛应用于企业级应用、数据分析以及互联网服务。Java作为一种多平台支持的编程语言,常常被用来与这些数据库...
2. **DB2数据库**: 需要加载`com.ibm.db2.jdbc.app.DB2Driver`驱动,并设置URL为`jdbc:db2://<hostname>:<port>/<database_name>`,例如:`jdbc:db2://localhost:5000/sample`。 3. **SQL Server 7.0/2000数据库*...
以上代码演示了如何使用JDBC连接到MySQL数据库,并给出了如何连接到Oracle和DB2数据库的示例。实际应用中,为了增强代码的灵活性和可维护性,建议将数据库连接信息(如URL、用户名和密码)存储在配置文件中,而不是...
- **SP错误处理用法**:可以使用`TRY-CATCH`结构来捕获和处理存储过程中可能出现的错误。 - **values的使用**:`VALUES`语句可用于直接插入单行或多行数据到表中。 - **给select语句指定隔离级别**:在`SELECT`语句...
Oracle调用Java代码过程是一种将Java程序集成到Oracle数据库中的技术,主要应用于处理特定的业务逻辑,例如在本例中,是为了访问异构数据库(如DB2)的数据。以下是详细的步骤和注意事项: **步骤一:加载JDBC驱动*...
### 数据库存储过程的写法及连接各种数据库的方法 #### 概述 本文将详细介绍如何在不同的数据库系统中编写存储过程以及如何建立与这些数据库的连接。存储过程是一种预编译的SQL代码块,它可以存储在数据库服务器上...
Java数据库操作精粹随书源码是一份宝贵的资源,它为开发者提供了全面了解和实践Java与各种数据库交互的实例。这份源码集包含了对Oracle、MSSQL(Microsoft SQL Server)、MySQL、DB2以及ACCESS等常见数据库的多种...
JDBC由一组用Java编程语言编写的类和接口组成,这些类和接口定义了用于连接到数据库、创建SQL语句以及处理结果集的方法。 尽管JDBC提供了一套标准的API,但由于不同数据库供应商的具体实现可能存在差异,因此在实际...
在Java编程中,连接各种类型的数据库是常见的任务。这些示例展示了如何使用Java Database Connectivity (JDBC) API来建立数据库连接。以下是对标题和描述中所述知识点的详细说明: 1. **JDBC API**: JDBC是Java平台...
本文将深入探讨标题中提及的几个主流数据库系统——SQL Server 2000与2005、Oracle 10g、MySQL、DB2以及AS400,以及如何使用Java进行数据库驱动加载和建立连接。 1. SQL Server 2000/2005: Microsoft SQL Server...
此外,JDBC还提供了Statement、PreparedStatement和CallableStatement等对象,用于执行SQL查询、更新和存储过程调用。 总结来说,JDBC是Java开发者与数据库交互的标准接口,提供了跨数据库的通用性,但实际使用时仍...
在IT领域,数据库访问是应用程序开发中的核心环节,它允许程序与各种类型的数据库进行交互,获取、存储和处理数据。本资源"多种数据库访问的例子代码.rar"提供了针对Oracle、MySql和DB2这三种主流数据库的访问示例,...
除了上述的基础链接,JDBC还支持事务管理、存储过程调用、元数据查询等高级功能。例如,通过`Statement`或`PreparedStatement`对象可以执行SQL语句,通过`ResultSet`对象可以获取查询结果。此外,为了提高性能和代码...
### Java JDBC 连接多种数据库的方法详解 在Java开发中,使用JDBC(Java Database Connectivity)来连接并操作不同类型的数据库是非常常见的需求。本文将详细介绍如何通过JDBC连接Oracle、DB2、SQL Server、Sybase...
**注意:** Oracle和DB2都支持通过存储过程传递集合参数,但语法略有不同。 #### 五、条件处理 条件处理涉及到如何在程序中处理错误和异常情况。 ##### 5.1 存储过程中的条件处理 **Oracle:** ```sql BEGIN -- ...
Java调用存储过程是数据库操作中的常见需求,特别是在...总的来说,Java调用存储过程是数据库编程中常用的技术,它提供了将数据库操作封装和优化的机会,同时利用了数据库自身的优势,提升了系统的整体性能和可维护性。
4. **使用Connection对象**:一旦建立了连接,就可以通过`Connection`对象进行数据库操作,如创建`Statement`或`PreparedStatement`来执行SQL查询,使用`CallableStatement`调用存储过程,以及管理事务等。...
在IT领域,特别是软件开发与数据管理中,Java与数据库的连接是不可或缺的一环,它构建了应用程序与数据存储之间的桥梁。本文将深入探讨“Java数据库连接”这一核心主题,解析其背后的原理、常见实现方式以及针对不同...
Java 调用存储过程是数据库操作中常见的一种技术,特别是在需要执行复杂逻辑或优化性能时。存储过程是在数据库管理系统(DBMS)中预编译的程序,可以在数据库端执行,减少了应用程序与数据库之间的交互次数,从而...