Java調用儲存過程:
- package test;
- import Java.sql.*;
- public class Study3 {
- private Connection con;
- public ResultSet rs;
- private CallableStatement callsta;
- private String use = "sa";
- private String pwd = "sa";
- public Study3() {
- try {
- // 連接數據庫驅動
- Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
- String str = "jdbc:microsoft:sqlserver://localhost:1433;databasename=test";
- con = DriverManager.getConnection(str, use, pwd);
- // 設置存儲過程參數
- String st = "{call Paging(?,?,?)}";
- callsta = con.prepareCall(st);
- callsta.setString(1, "select * from T_employee");
- callsta.setInt(2, 1);
- callsta.setInt(3, 3);
- // 循環輸出調用存儲過程的記錄結果
- StringBuffer sb=new StringBuffer();
- int rsNum=0;//統計結果集的數量
- int updateCount = -1;
- boolean flag = callsta.execute();// 這個而爾值只說明第一個返回內容是更新計數還是結果集。
- do {
- updateCount = callsta.getUpdateCount();
- if (updateCount != -1) {// 說明當前行是一個更新計數
- // 處理.
- System.out.println("..說明當前行是一個更新計數..");
- callsta.getMoreResults();
- continue;// 已經是更新計數了,處理完成後應該移動到下一行
- // 不再判斷是否是ResultSet
- }
- rs = callsta.getResultSet();
- if (rs != null) {// 如果到了這裡,說明updateCount == -1
- // 處理rs
- rsNum++;
- System.out.println("統計結果集的數量:"+rsNum);
- if (rs != null) {
- ResultSetMetaData rsmd = rs.getMetaData(); // 獲取字段名
- int numberOfColumns = rsmd.getColumnCount(); // 獲取字段數
- int i = 0;
- while (rs.next()) { // 將查詢結果取出
- for (i = 1; i <= numberOfColumns; i++) {
- // System.out.println(rs.getInt("總頁數"));
- String date = rs.getString(i);
- sb.append(date+" ");
- }
- }
- rs.close();
- }
- callsta.getMoreResults();
- continue;
- // 是結果集,處理完成後應該移動到下一行
- }
- // 如果到了這裡,說明updateCount == -1 && rs == null,什麼也沒的了
- System.out.println(sb.toString());
- } while (!(updateCount == -1 && rs == null));
- // callsta.getXXX(int);//獲取輸出參數
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] age) {
- Study3 study = new Study3();
- }
- }