今天來總結一一關於在sqlserver中存儲過程的調用,也好與昨天的oracle作一個對比。我覺得在sqlserver中調用簡單些,至少相對於Oracle 來說~
還是用具體的例子說吧
先來個查詢的
建立存儲過程sel_book
create procedure sel_book
select * from book;
解析部分與Oracle的差不多。因為都是用Java來嘛,唉,是不是又費話了。
為了與上篇Oracle的形成對照,來個通俗一點的步驟~
1.load the JDBC Driver(加載驅動)
2.Establish the Database connection(建立連接)
3.create a CallableStatement (創建一個callablestatement對象)
4.excute a Quary(執行查詢)
5.process the results(處理結果集)
6.close the Connection(關閉連接)
............//代碼如下
Class.forName("com.mircosoft.jdbc.sqlserver.SQLServerDriver");//加載驅動
String URL="jdbc:microsoft:sqlserver://localhost:1433";
Connection conn=DriverManager.getConnection(URL,"YY","1314");//建立連接
CallableStatement cs=conn.prepareStatement("{call sel_book}");
ResultSet rs=rs.executeQuary();
while(re.next()){
int id=rs.getId("id");
String name=rs.getName("name");
String aurhtor=rs.getAuthor(''author");
System.out.println(id+"\t"+name+"\t"+author+"\t");
cs.close();
conn.close();
相比Oracle中對查詢存儲過程的調用,在sqlserver簡單多了吧~
下面寫一個add 這個相對查詢而言可能難一點,不過應該說還是很簡單的,只要了解存儲過程的編寫,解析都是一樣的.
//存儲過程 add_book
create procedure add_book
@book_id int
@book_name varchar(20)//在mssql中一定要記得寫長度,而Oracle中則千萬不能寫,寫了就報錯.
@book_author varchar(20)
if exists(select name from book where name = @ book_name);
begin
raiserror('不能重復輸入',14,1);
return;
else
insert into book(id,name,author)values(@book_id,@book_name,@book_author);
//解析代碼
public void (int id,String name,String aurhor){
Class.forName("com.mircosoft.jdbc.sqlserver.SQLServerDriver");//加載驅動
String URL="jdbc:microsoft:sqlserver://localhost:1433";
Connection conn=DriverManager.getConnection(URL,"YY","1314");//建立連接
CallableStatement cs=conn.prepareStatement("{call add_book(?,?,?)}");
cs.setInt(1,id);
cs.setString (2,name);
cs.setString(3,author);
cs.execute();//到這裡數據就加進去了哦~
cs.close(); //不過要記得關閉連接
conn.close();
//別的更新和刪除解析都是一樣的,就不多說了.