当前位置: 移动技术网 > IT编程>开发语言>.net > .net调用存储过程详细介绍

.net调用存储过程详细介绍

2017年12月12日  | 移动技术网IT编程  | 我要评论

古镇,牡丹江师范学院校历,唐氏筛查性别

 连接字符串

 

复制代码 代码如下:

 string conn = configurationmanager.connectionstrings["northwindconnectionstring"].connectionstring;
 

 confige文件
 

复制代码 代码如下:

     <connectionstrings>
        <add name="northwindconnectionstring" connectionstring="data source=.;initial catalog=northwind;integrated security=true" providername="system.data.sqlclient"/>
    </connectionstrings>
 

 1. 只返回单一记录集的存储过程
 
复制代码 代码如下:

      sqlconnection sqlconn = new sqlconnection(conn);
        sqlcommand cmd = new sqlcommand();
        // 设置sql连接
        cmd.connection = sqlconn;
        // 如果执行语句
        cmd.commandtext = "categoriestest1";
        // 指定执行语句为存储过程
        cmd.commandtype = commandtype.storedprocedure;

        sqldataadapter dp = new sqldataadapter(cmd);
        dataset ds = new dataset();
        // 填充dataset
        dp.fill(ds);
        // 以下是显示效果
        gridview1.datasource = ds;
        gridview1.databind();
 


 存储过程categoriestest1
 
复制代码 代码如下:

 create procedure categoriestest1
as
select *
from  categories
go
 

 2. 没有输入输出的存储过程
c#代码部分

复制代码 代码如下:

       sqlconnection sqlconn = new sqlconnection(conn);
        sqlcommand cmd = new sqlcommand();

        cmd.connection = sqlconn;
        cmd.commandtext = "categoriestest2";
        cmd.commandtype = commandtype.storedprocedure;
        sqlconn.open();
        // 执行并显示影响行数
        label1.text = cmd.executenonquery().tostring();
        sqlconn.close();


存储过程categoriestest2
复制代码 代码如下:

create procedure categoriestest2  as
insert into dbo.categories
(categoryname,[description],[picture])
values ('test1','test1',null)
go

3. 有返回值的存储过程
c#代码部分
复制代码 代码如下:

sqlconnection sqlconn = new sqlconnection(conn);
        sqlcommand cmd = new sqlcommand();
        cmd.connection = sqlconn;
        cmd.commandtext = "categoriestest3";
        cmd.commandtype = commandtype.storedprocedure;
        // 创建参数
        idataparameter[] parameters = {
                new sqlparameter("rval", sqldbtype.int,4)
            };
        // 将参数类型设置为 返回值类型
        parameters[0].direction = parameterdirection.returnvalue;
        // 添加参数
        cmd.parameters.add(parameters[0]);

        sqlconn.open();
        // 执行存储过程并返回影响的行数
        label1.text = cmd.executenonquery().tostring();
        sqlconn.close();
        // 显示影响的行数和返回值
        label1.text += "-" + parameters[0].value.tostring() ;


存储过程categoriestest3
复制代码 代码如下:

create procedure categoriestest3
as
insert into dbo.categories
(categoryname,[description],[picture])
values ('test1','test1',null)
return @@rowcount
go

4. 有输入参数和输出参数的存储过程
c#代码部分
复制代码 代码如下:

sqlconnection sqlconn = new sqlconnection(conn);
        sqlcommand cmd = new sqlcommand();
        cmd.connection = sqlconn;
        cmd.commandtext = "categoriestest4";
        cmd.commandtype = commandtype.storedprocedure;
        // 创建参数
        idataparameter[] parameters = {
                new sqlparameter("@id", sqldbtype.int,4) ,
                new sqlparameter("@categoryname", sqldbtype.nvarchar,15) ,
            };
        // 设置参数类型
        parameters[0].direction = parameterdirection.output;  // 设置为输出参数
        parameters[1].value = "testcategoryname";
        // 添加参数
        cmd.parameters.add(parameters[0]);
        cmd.parameters.add(parameters[1]);

        sqlconn.open();
        // 执行存储过程并返回影响的行数
        label1.text = cmd.executenonquery().tostring();
        sqlconn.close();
        // 显示影响的行数和输出参数
        label1.text += "-" + parameters[0].value.tostring() ;


存储过程categoriestest4
复制代码 代码如下:

create procedure categoriestest4
@id int output,
@categoryname nvarchar(15)
as
insert into dbo.categories
(categoryname,[description],[picture])
values (@categoryname,'test1',null)
set  @id = @@identity
go

5. 同时具有返回值、输入参数、输出参数的存储过程
c#代码部分
复制代码 代码如下:

sqlconnection sqlconn = new sqlconnection(conn);
        sqlcommand cmd = new sqlcommand();
        cmd.connection = sqlconn;
        cmd.commandtext = "categoriestest5";
        cmd.commandtype = commandtype.storedprocedure;
        // 创建参数
        idataparameter[] parameters = {
                new sqlparameter("@id", sqldbtype.int,4) ,
                new sqlparameter("@categoryname", sqldbtype.nvarchar,15) ,
                new sqlparameter("rval", sqldbtype.int,4)
            };
        // 设置参数类型
        parameters[0].direction = parameterdirection.output;       // 设置为输出参数
        parameters[1].value = "testcategoryname";                  // 给输入参数赋值
        parameters[2].direction = parameterdirection.returnvalue;  // 设置为返回值
        // 添加参数
        cmd.parameters.add(parameters[0]);
        cmd.parameters.add(parameters[1]);
        cmd.parameters.add(parameters[2]);

        sqlconn.open();
        // 执行存储过程并返回影响的行数
        label1.text = cmd.executenonquery().tostring();
        sqlconn.close();
        // 显示影响的行数,输出参数和返回值
        label1.text += "-" + parameters[0].value.tostring() + "-" + parameters[2].value.tostring();


存储过程categoriestest5
复制代码 代码如下:

create procedure categoriestest5
@id int output,
@categoryname nvarchar(15)
as
insert into dbo.categories
(categoryname,[description],[picture])
values (@categoryname,'test1',null)
set  @id = @@identity
return @@rowcount
go

 6. 同时返回参数和记录集的存储过程
c#代码部分
复制代码 代码如下:

        sqlconnection sqlconn = new sqlconnection(conn);
        sqlcommand cmd = new sqlcommand();
        cmd.connection = sqlconn;
        cmd.commandtext = "categoriestest6";
        cmd.commandtype = commandtype.storedprocedure;
        // 创建参数
        idataparameter[] parameters = {
                new sqlparameter("@id", sqldbtype.int,4) ,
                new sqlparameter("@categoryname", sqldbtype.nvarchar,15) ,
                new sqlparameter("rval", sqldbtype.int,4)                   // 返回值
            };
        // 设置参数类型
        parameters[0].direction = parameterdirection.output;        // 设置为输出参数
        parameters[1].value = "testcategoryname";                   // 给输入参数赋值
        parameters[2].direction = parameterdirection.returnvalue;   // 设置为返回值
        // 添加参数
        cmd.parameters.add(parameters[0]);
        cmd.parameters.add(parameters[1]);
        cmd.parameters.add(parameters[2]);

        sqldataadapter dp = new sqldataadapter(cmd);
        dataset ds = new dataset();
        // 填充dataset
        dp.fill(ds);
        // 显示结果集
        gridview1.datasource = ds.tables[0];
        gridview1.databind();

        label1.text = "";
        // 显示输出参数和返回值
        label1.text +=  parameters[0].value.tostring() + "-" + parameters[2].value.tostring();


存储过程categoriestest6
复制代码 代码如下:

create procedure categoriestest6
@id int output,
@categoryname nvarchar(15)
as
insert into dbo.categories
(categoryname,[description],[picture])
values (@categoryname,'test1',null)
set  @id = @@identity
select * from categories
return @@rowcount
go

7. 返回多个记录集的存储过程
 c#代码部分
 
复制代码 代码如下:

      sqlconnection sqlconn = new sqlconnection(conn);
        sqlcommand cmd = new sqlcommand();

        cmd.connection = sqlconn;
        cmd.commandtext = "categoriestest7";
        cmd.commandtype = commandtype.storedprocedure;

        sqldataadapter dp = new sqldataadapter(cmd);
        dataset ds = new dataset();
        // 填充dataset
        dp.fill(ds);
        // 显示结果集1
        gridview1.datasource = ds.tables[0];
        gridview1.databind();
        // 显示结果集2
        gridview2.datasource = ds.tables[1];
        gridview2.databind();
 


 存储过程categoriestest7
 
复制代码 代码如下:

 create procedure categoriestest7
as
select * from categories
select * from categories
go
 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网