zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

Net存储 详细 介绍 过程 调用
2023-06-13 09:14:51 时间

 连接字符串

 

复制代码代码如下:

 stringconn=ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
 

 confige文件
 

复制代码代码如下:

    <connectionStrings>
       <addname="NorthwindConnectionString"connectionString="DataSource=.;InitialCatalog=Northwind;IntegratedSecurity=True"providerName="System.Data.SqlClient"/>
   </connectionStrings>
 

 1.只返回单一记录集的存储过程
 复制代码代码如下:
     SqlConnectionsqlconn=newSqlConnection(conn);
       SqlCommandcmd=newSqlCommand();
       //设置sql连接
       cmd.Connection=sqlconn;
       //如果执行语句
       cmd.CommandText="Categoriestest1";
       //指定执行语句为存储过程
       cmd.CommandType=CommandType.StoredProcedure;

       SqlDataAdapterdp=newSqlDataAdapter(cmd);
       DataSetds=newDataSet();
       //填充dataset
       dp.Fill(ds);
       //以下是显示效果
       GridView1.DataSource=ds;
       GridView1.DataBind();
 


 存储过程Categoriestest1
 复制代码代码如下:
 CREATEPROCEDURECategoriestest1
AS
select*
from Categories
GO
 

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

复制代码代码如下:
      SqlConnectionsqlconn=newSqlConnection(conn);
       SqlCommandcmd=newSqlCommand();

       cmd.Connection=sqlconn;
       cmd.CommandText="Categoriestest2";
       cmd.CommandType=CommandType.StoredProcedure;
       sqlconn.Open();
       //执行并显示影响行数
       Label1.Text=cmd.ExecuteNonQuery().ToString();
       sqlconn.Close();


存储过程Categoriestest2
复制代码代码如下:
CREATEPROCEDURECategoriestest2 AS
insertintodbo.Categories
(CategoryName,[Description],[Picture])
values("test1","test1",null)
GO

3.有返回值的存储过程
c#代码部分
复制代码代码如下:
SqlConnectionsqlconn=newSqlConnection(conn);
       SqlCommandcmd=newSqlCommand();
       cmd.Connection=sqlconn;
       cmd.CommandText="Categoriestest3";
       cmd.CommandType=CommandType.StoredProcedure;
       //创建参数
       IDataParameter[]parameters={
               newSqlParameter("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
复制代码代码如下:
CREATEPROCEDURECategoriestest3
AS
insertintodbo.Categories
(CategoryName,[Description],[Picture])
values("test1","test1",null)
return@@rowcount
GO

4.有输入参数和输出参数的存储过程
c#代码部分
复制代码代码如下:
SqlConnectionsqlconn=newSqlConnection(conn);
       SqlCommandcmd=newSqlCommand();
       cmd.Connection=sqlconn;
       cmd.CommandText="Categoriestest4";
       cmd.CommandType=CommandType.StoredProcedure;
       //创建参数
       IDataParameter[]parameters={
               newSqlParameter("@Id",SqlDbType.Int,4),
               newSqlParameter("@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
复制代码代码如下:
CREATEPROCEDURECategoriestest4
@idintoutput,
@CategoryNamenvarchar(15)
AS
insertintodbo.Categories
(CategoryName,[Description],[Picture])
values(@CategoryName,"test1",null)
set @id=@@IDENTITY
GO

5.同时具有返回值、输入参数、输出参数的存储过程
c#代码部分
复制代码代码如下:
SqlConnectionsqlconn=newSqlConnection(conn);
       SqlCommandcmd=newSqlCommand();
       cmd.Connection=sqlconn;
       cmd.CommandText="Categoriestest5";
       cmd.CommandType=CommandType.StoredProcedure;
       //创建参数
       IDataParameter[]parameters={
               newSqlParameter("@Id",SqlDbType.Int,4),
               newSqlParameter("@CategoryName",SqlDbType.NVarChar,15),
               newSqlParameter("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
复制代码代码如下:
CREATEPROCEDURECategoriestest5
@idintoutput,
@CategoryNamenvarchar(15)
AS
insertintodbo.Categories
(CategoryName,[Description],[Picture])
values(@CategoryName,"test1",null)
set @id=@@IDENTITY
return@@rowcount
GO

 6.同时返回参数和记录集的存储过程
c#代码部分
复制代码代码如下:
       SqlConnectionsqlconn=newSqlConnection(conn);
       SqlCommandcmd=newSqlCommand();
       cmd.Connection=sqlconn;
       cmd.CommandText="Categoriestest6";
       cmd.CommandType=CommandType.StoredProcedure;
       //创建参数
       IDataParameter[]parameters={
               newSqlParameter("@Id",SqlDbType.Int,4),
               newSqlParameter("@CategoryName",SqlDbType.NVarChar,15),
               newSqlParameter("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]);

       SqlDataAdapterdp=newSqlDataAdapter(cmd);
       DataSetds=newDataSet();
       //填充dataset
       dp.Fill(ds);
       //显示结果集
       GridView1.DataSource=ds.Tables[0];
       GridView1.DataBind();

       Label1.Text="";
       //显示输出参数和返回值
       Label1.Text+= parameters[0].Value.ToString()+"-"+parameters[2].Value.ToString();


存储过程Categoriestest6
复制代码代码如下:
CREATEPROCEDURECategoriestest6
@idintoutput,
@CategoryNamenvarchar(15)
AS
insertintodbo.Categories
(CategoryName,[Description],[Picture])
values(@CategoryName,"test1",null)
set @id=@@IDENTITY
select*fromCategories
return@@rowcount
GO

7.返回多个记录集的存储过程
 c#代码部分
 复制代码代码如下:
     SqlConnectionsqlconn=newSqlConnection(conn);
       SqlCommandcmd=newSqlCommand();

       cmd.Connection=sqlconn;
       cmd.CommandText="Categoriestest7";
       cmd.CommandType=CommandType.StoredProcedure;

       SqlDataAdapterdp=newSqlDataAdapter(cmd);
       DataSetds=newDataSet();
       //填充dataset
       dp.Fill(ds);
       //显示结果集1
       GridView1.DataSource=ds.Tables[0];
       GridView1.DataBind();
       //显示结果集2
       GridView2.DataSource=ds.Tables[1];
       GridView2.DataBind();
 


 存储过程Categoriestest7
 复制代码代码如下:
 CREATEPROCEDURECategoriestest7
AS
select*fromCategories
select*fromCategories
GO