您的位置:首页 > 编程语言 > Java开发

Java 调用存储过程实例

2011-08-24 21:58 351 查看
import java.sql.*;

import javax.sql.*;

import javax.naming.*;

......

private int InsertProject(HttpServletRequest request, HttpServletResponse response)

{

int Result = -1;

// 调用存储过程

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

try

{

// 连接数据库

Context ctx = new InitialContext();

// 以下两种连接方式根据连接MySQL还是SQLSERVER来决定采用

DataSource ds = (DataSource) ctx.lookup("jdbc/erp"); // SQLSERVER 使用

conn = ds.getConnection();

CallableStatement cs = conn.prepareCall("{ call testProc (?, ?) } "); // 问号个数代表参数个数

// 没参数则不需要写小括号和括号内的问号 ,例如下面的例子

// CallableStatement cs = conn.prepareCall("{ call testProc) } "); // 问号个数代表参数个数

// 设置参数 有两个参数

cs.setString(1, "str1");

cs.setString(2, "str2");

rs = cs.executeQuery();

if (rs.next() == true)

{

String a = rs.getString("f1");

String b = rs.getString("f2");

}

// 创建 JDBC 申明

// stmt = con.createStatement();

// stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // sql server 下如果存在 last 或者 first 方法则使用 */

// 执行SQL命令

// Result = stmt.executeUpdate(sql);

//

// Result = 1;

}

catch (Exception e)

{

Result = -1;

e.printStackTrace();

}

finally

{

if (rs != null)

{

try

{

rs.close();

}

catch (Exception e)

{

}

}

if (stmt != null)

{

try

{

stmt.close();

}

catch (Exception e)

{

}

}

if (conn != null)

{

try

{

conn.close();

}

catch (Exception e)

{

}

}

}

return Result;

}

//----------------------------------

存储过程如下

-------------------------------------

CREATE PROCEDURE testProc

-- Add the parameters for the stored procedure here

@val1 varchar(10),

@val2 varchar(10)

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

select @val1 as [f1], @val2 as [f2], 'ccc' as [f3]

END

GO

/* 测试存储过程时调用

exec testProc 'name111', 'name222'

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: