sql server 存储过程 java_sql server 存储过程 以及java如何使用存储过程

Sql 语句

有一个test_table1表  他有两个字段  ID 和name

proc是procedure的缩写 也就是存储过程,StuProc2为创建的存储过程名称

执行以下创建存储后会在Sql 数据库生成存储过程

27718a89fbe63cd4b14578abe473e058.png

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

packagecom.bowei.utl;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Properties;public classJdbcUtl {//数据库驱动

private static String Driver = "";//数据库地址

private static String url = "";//数据库用户名

private static String userName = "";//数据库密码

private static String password = "";static{

Properties p= newProperties();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 staticString getDriver() {returnDriver;

}public static voidsetDriver(String driver) {

Driver=driver;

}public staticString getUrl() {returnurl;

}public static voidsetUrl(String url) {

JdbcUtl.url=url;

}public staticString getUserName() {returnuserName;

}public static voidsetUserName(String userName) {

JdbcUtl.userName=userName;

}public staticString getPassword() {returnpassword;

}public static voidsetPassword(String password) {

JdbcUtl.password=password;

}//获取数据库连接

public staticConnection getConn() {

Connection conn= null;try{//加载驱动

Class.forName(Driver);//获取数据库连接

conn =DriverManager.getConnection(url, userName, password);

}catch(SQLException e) {

e.printStackTrace();

}catch(ClassNotFoundException e) {

e.printStackTrace();

}returnconn;

}//关闭数据库资源

public static voidcloseAll(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();

}

}

}

}

6fc549c5d55860b021eb4f391fafe816.png

JDBC内容:

Driver=com.microsoft.sqlserver.jdbc.SQLServerDriver

url=jdbc:sqlserver://192.168.33.170;DatabaseName=test

userName=xxzx

password=xxzx

packagecunChuGuoCheng;importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importcom.bowei.utl.JdbcUtl;public classcunChu {/*** 带参的存储过程 返回一个int类型的值

**/

public voiddaican(){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 voidquery(){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) throwsSQLException {

cunChu cun=newcunChu();//cun.daican();//带参的存储过程

cun.query();//返回查询所有的存储过程

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值