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();//返回查询所有的存储过程 } }