300分求教﹐用java調用存儲過程能不能象delphi那樣返回一個數据集?(50分)

L

lqy169

Unregistered / Unconfirmed
GUEST, unregistred user!
300分求教﹐用java調用存儲過程能不能象delphi那樣返回一個數据集?
就是把最后的 Select 返回到一個 ResultSet.
 
绝对可以
 
我想應該是可以的﹐但是我遇上了問題,以下是我的代碼

String sqlstr=new String("{call OrderPlan(?,?)}");
CallableStatement Pst=connection.prepareCall(sqlstr,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
Pst.setString(1,new String("sss"));
Pst.setInt(2,0);
ResultSet rs= Pst.executeQuery();
//以上換成
// Pst.execute();
// ResultSet rs=Pst.getResultSet();
//也是不行
rs.last();
//到這里出錯,好象是沒有數据返回﹐但是我的存儲過程肯定是有數据返回的。而且我的
//看了 rs 的狀態﹐它的字段數是正确的
數据庫連接沒問題﹐存儲過程也沒問題
數据庫是 sql server 7.0 用 jdbc-odbc 橋
 
*执行一条insert语句并传参数*/针对于oracle
create or replace procedure p_test2(i in number) as
begin
insert into t values (i,'x'||to_char(i));
commit;
end;
/
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@page import="java.sql.*"%>
<html>
<body>
<table>
<tr><td>aaa</td><td>bbb</td></tr>
<%
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:eek:racle:thin:mad:192.168.1.6:1521:db";

Class.forName(driver);
Connection conn = DriverManager.getConnection(strUrl, "scott", "tiger");
String procedure = "{call p_test2 (?) }";
CallableStatement cstmt = conn.prepareCall(procedure);
cstmt.setInt(1,33);
cstmt.executeUpdate();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from t");
while(rs.next())
{
out.println("<tr><td>" + rs.getString(1) + "</td><td>" + rs.getString(2) + "</td></tr>");
}
rs.close();
stmt.close();
conn.close();
%>
</table>
<p>
<%
out.print(conn.isClosed());
%>
</body>
</html>
</body>
</html>
 
傳參或取參是沒問題啦﹐但我現在是要取得 用存儲過程進行匯總統計后得到的
結果數据集。
唉,怎么用java 做點事就那么難啊﹐用delphi的話早就寫出來去睡大覺了
 
灵活的东西总是有些让人费神的。呵~~
你可以定义自己的数据集。
 
顶部