Sql 語句
有一個test_table1表 他有兩個字段 ID 和name
proc是procedure的縮寫 也就是存儲過程,StuProc2為創建的存儲過程名稱
執行以下創建存儲后會在Sql 數據庫生成存儲過程
create proc StuProc2
as
begin
select * from test_table1;
end
go
調用存儲過程(這是無參的):exec StuProc2
創建一個帶參的存儲過程 @跟上參數名 和類型 返回參數多一個 output
create proc StuProc1
@sname varchar(100),@count int output
as
begin
select @count=count(ID) from test_table1 where name=@sname ;
end
go
調用有參存儲過程:exec StuProc1 '字符串參數' (字符串需要有引號)
java 調用,需要用到JDBC連接數據庫並創建Connection
package com.bowei.utl; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JdbcUtl { // 數據庫驅動 private static String Driver = ""; // 數據庫地址 private static String url = ""; // 數據庫用戶名 private static String userName = ""; // 數據庫密碼 private static String password = ""; static { Properties p = new Properties(); try { // 通過相對路徑加載文件 p.load(new FileInputStream(new File("sof/jdbc.properties"))); // 用getProperty方法通過關鍵字獲取信息 Driver = p.getProperty("Driver"); url = p.getProperty("url"); userName = p.getProperty("userName"); password = p.getProperty("password"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static String getDriver() { return Driver; } public static void setDriver(String driver) { Driver = driver; } public static String getUrl() { return url; } public static void setUrl(String url) { JdbcUtl.url = url; } public static String getUserName() { return userName; } public static void setUserName(String userName) { JdbcUtl.userName = userName; } public static String getPassword() { return password; } public static void setPassword(String password) { JdbcUtl.password = password; } // 獲取數據庫連接 public static Connection getConn() { Connection conn = null; try { // 加載驅動 Class.forName(Driver); // 獲取數據庫連接 conn = DriverManager.getConnection(url, userName, password); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return conn; } // 關閉數據庫資源 public static void closeAll(ResultSet rs, Statement stat, Connection conn) { /* 分別按順序關閉數據庫的結果集資源,Statement 對象資源以及Connection 連接數據庫對象 */ if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stat != null) { try { stat.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
JDBC內容:
Driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://192.168.33.170;DatabaseName=test
userName=xxzx
password=xxzx
package cunChuGuoCheng; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import com.bowei.utl.JdbcUtl; public class cunChu { /** * 帶參的存儲過程 返回一個int類型的值 * */ public void daican(){ try{ Connection conn = JdbcUtl.getConn(); CallableStatement c=conn.prepareCall("{call StuProc1(?,?)}");//調用帶參的存儲過程 //給存儲過程的參數設置值 c.setString(1,"測試"); //將第一個參數的值設置成測試 c.registerOutParameter(2,java.sql.Types.INTEGER);//第二個是返回參數 返回未Integer類型 //執行存儲過程 c.execute(); System.out.println (c.getInt(2));//打印返回參數 conn.close(); }catch(Exception e){ e.printStackTrace(); } } /** * 這個是直接返回查詢所有的結果 * */ public void query(){ try{ Connection conn = JdbcUtl.getConn(); CallableStatement c=conn.prepareCall("{call StuProc2}");//這兒調用了查詢所有的存儲過程 ResultSet rs=c.executeQuery(); System.out.println ("學號:"+" "+"姓名:"); while(rs.next()) { int Stu=rs.getInt("ID"); String name=rs.getString("name"); System.out.println (Stu+" "+name+" "); } c.close(); }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args) throws SQLException { cunChu cun=new cunChu(); //cun.daican();//帶參的存儲過程 cun.query();//返回查詢所有的存儲過程 } }