日期:2014-05-20  浏览次数:20827 次

java怎么调用存储过程?希望给个完整的实例代码!!!!!!
请问java调用sqlserver2000数据库存储过程的方法和思想,及其怎么利用结果?
迷惘中!!!
谢谢!!!

------解决方案--------------------
用CallableStatement 你搜一下这个吧。网上很多现成的例子。我现在没有现成的例子。
------解决方案--------------------
可以避免注入。。。
------解决方案--------------------
1. 某个数据库中有个Customer_Table表:
create table Customer_Table(
customerID varchar(14),
customerName varchar(20),
phone varchar(14),
email varchar(30),
address varchar(50),
customerIntro varchar(100),
regDate datetime,
primary key(customerID)
)

2. 然后有个存储过程Customer_Insert:
if object_id(Customer_Insert) is not null
begin drop procedure Customer_Insert end

go
create procedure Customer_Insert(
@customerID varchar(14),
@customerName varchar(20),
@phone varchar(14),
@email varchar(30),
@address varchar(50),
@customerIntro varchar(100)
) as
insert into Customer_Table
values(@customerID, @customerName, @phone, @email, @address,
@customerIntro, GETDATE());

3. 最后是完整的示范程序:
// CallProcedure.java -- 调用存储过程示例。
// 2007-01-10 18:41

import java.sql.*;

public class CallProcedure {
public static void main(String[] args) {
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_course ";
String user = "sa "; // user name
String password = "sqlserversaps "; // password

try {
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");
Connection con = DriverManager.getConnection(url, user, password);
CallableStatement cstmt = con.prepareCall(
"{call Customer_Insert(?, ?, ?, ?, ?, ?)} ");
cstmt.setString(1, "111111111 ");
cstmt.setString(2, "111111111 ");
cstmt.setString(3, "111111111 ");
cstmt.setString(4, "111@11111 ");
cstmt.setString(5, "111111111 ");
cstmt.setString(6, "111111111 ");
cstmt.execute();
System.out.println( "Done! ");
}
catch(Exception e) {
e.printStackTrace();
}
}
}
------解决方案--------------------
请问java调用sqlserver2000数据库存储过程的方法和思想,及其怎么利用结果?
根据数据库本身存储过程如何返回参数而定,
String strSQL = "{? = call UP_QLINECHGNEW(?)} ";
db2Conn.setAutoCommit(false);
CallableStatement sqlstmt = db2Conn.prepareCall(strSQL);
sqlstmt.setString(2, "111111111 ");
sqlstmt.registerOutParameter(1,Types.INTEGER); //这个就是返回参数,另外返回类型注意,
另外如果返回的是结果集得话。如同访问数据库一样得到resultSet
一样可以访问。网上很多,比较容易的。祝你好运!

------解决方案--------------------
mark
------解决方案--------------------
mark

------解决方案--------------------
CallableStatement cst = con.prepareCall( "{call bao.goucheng(?,?,?)} ");
明白?