关于java中的调用存储过程!
来源:互联网 发布:找个大数据培训机构 编辑:程序博客网 时间:2024/05/28 05:17
package test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import org.apache.log4j.Logger;
import sun.util.logging.resources.logging;
import com.util.*;
public class TestCall {
/**
* @param args
*/
private static final Logger LOG = Logger.getLogger(TestCall.class);
// 测试存储过程,参见同包中的sql.sql
public void testCall() {
Connection conn = Database.getConnection();
CallableStatement cs = null;
ResultSet rs = null;
// 方式一
// String sql ="{?=call test_p('tom','tom',?)}";
// String sql = "{call test_p('tom','tom',?)}";//有输出参数时
// 方式二
// String sql = "{call test_p 'tom','tom',?}";
// String sql = "{call test_p ?,'tom',?}"; //错误,?是第一个参数时要加上小括号。
String sql = "{call test_p (?,'tom',?)}";//ms sql
//String sql = "{call test_p (?,?)}";// mysql
try {
cs = conn.prepareCall(sql);
// ms sql
// jdbc没有<实现>setString(String,String);,只有setString(int,String)
cs.setString(1, "tom");//ms sql server & mysql
//cs.setString("p1", "tom");// mysql
// 注册输出参数 the first parameter is 1
cs.registerOutParameter(2, Types.VARCHAR);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
rs = cs.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (cs.getMoreResults()) {
rs = cs.getResultSet();
while (rs.next()) {
System.out.println(rs.getString("name"));
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// dbms可能有限制,先检索返回值,再检索输出参数
try {
String out = cs.getString(2);
System.out.println("存储过程的输出参数:" + out);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static synchronized void test() {
// java.lang.reflect.Modifier
}
public static void main(String[] args) {
LOG.info(5 / 2);
LOG.error("error");
LOG.warn("warn");
LOG.info("info");
LOG.fatal("fatal");
new TestCall().testCall();
}
}
- 关于java中的调用存储过程!
- oracle存储过程,存储过程,以及在java中的调用
- java调用oracle包中的存储过程
- java调用Oracle中的存储过程
- 关于 "java 如何调用Oracle存储过程中的动态refcursor结果集" 问题
- oracle编写过程以及存储过程在java中的调用
- Java调用存储过程
- Java 调用存储过程
- Java 调用存储过程
- JAVA调用存储过程
- java调用存储过程
- java调用存储过程
- Java调用存储过程
- java调用存储过程
- java调用存储过程
- java 调用存储过程
- JAVA调用存储过程
- java调用存储过程
- 有道包兴天难题之解迷游戏答案
- 适配器模式
- 实模式、保护模式和虚拟8086方式
- ip查询归属地
- sqlserver 返回一个表的 字符串分割函数
- 关于java中的调用存储过程!
- C#中的委托
- HTML元素的onpropertychange的作用
- 揭开国美电器黄光裕的盖子
- VC如何判断当前进程处在Administrator权限下
- 清醒 计划
- SQL Server中自定义函数和游标应用的经典案例
- SQL 内连接,左外连接,右外连接,全连接
- Adobe Acrobat 8.0安装和授权