在Net下调用SqlServer2k中存储过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Net下调用SqlServer2k中存储过程相关的知识,希望对你有一定的参考价值。

.Net下调用SqlServer2k中存储过程
.Net下调用SqlServer2k中存储过程
首先,在SqlServer中创建存储过程,在调用时分为有参数和没有参数两种情况,首先,在SqlServer中创建存储过程,在调用时分为有参数和没有参数两种情况,
先就简单的没有参数的情况简要的介绍:先就简单的没有参数的情况简要的介绍:
假设存储过程如下:
CREATE
PROC
SelectAll假设存储过程如下:
CREATE
PROC
SelectAll
AS
AS
SELECT
*
FROM
StudentInf
SELECT
*
FROM
StudentInf
则此sp的调用如下:则此sp的调用如下:
SqlCommand
selectCMD
=
new
SqlCommand(“SelectAll”,
conn);
SqlCommand
selectCMD
=
new
SqlCommand(“SelectAll”,
conn);
//conn
为SqlConnection
//conn为SqlConnection
selectCMD.CommandType
=
CommandType.StoredProcedure;
selectCMD.CommandType
=
CommandType.StoredProcedure;
如果需要将结果集加到某个DataAdapter上,则可如下:如果需要将结果集加到某个DataAdapter上,则可如下:
SqlDataAdapter
stuDA
=
new
SqlDataAdapter();
SqlDataAdapter
stuDA
=
new
SqlDataAdapter();
stuDa.SelectCommand
=
selectCMD;
stuDa.SelectCommand
=
selectCMD;
如果有参数:create
proc
andSelect如果有参数:create
proc
andSelect
@StudentId
varchar(10),
@StudentId
varchar(10),
@StudentName
varchar(10),
@StudentName
varchar(10),
As
As
Select
*
from
StudentInf
where
StudentId
=
@StudentId
and
StudentName
=
@StudentName
Select
*
from
StudentInf
where
StudentId
=
@StudentId
and
StudentName
=
@StudentName
则参数可以如下添加:则参数可以如下添加:
selectCMD.Parameters.Add(
“@StudentId
”,
SqlDbType.NVarChar,
10);
selectCMD.Parameters.Add(
“@StudentId
”,
SqlDbType.NVarChar,
10);
selectCMD.Parameters.Add(
“@StudentName
”,
SqlDbType.NvarChar,
10);
selectCMD.Parameters.Add(
“@StudentName
”,
SqlDbType.NvarChar,
10);
如果只有一个参数,也可以这样赋值:如果只有一个参数,也可以这样赋值:
SqlParameters
onePara
=
selectCMD.Parameters.Add(
“@StudentId
”,
SqlDbType.NVarChar,
10);
SqlParameters
onePara
=
selectCMD.Parameters.Add(
“@StudentId
”,
SqlDbType.NVarChar,
10);
onePara.Value
=

a
string

onePara.Value
=

a
string
参考技术A 首先,在SqlServer中创建存储过程,在调用时分为有参数和没有参数两种情况,
  先就简单的没有参数的情况简要的介绍:
  假设存储过程如下:
CREATE
PROC
SelectAll
  AS
  SELECT
*
FROM
StudentInf
  则此sp的调用如下:
  SqlCommand
selectCMD
=
new
SqlCommand(“SelectAll”,
conn);
  //conn
为SqlConnection
  selectCMD.CommandType
=
CommandType.StoredProcedure;
  如果需要将结果集加到某个DataAdapter上,则可如下:
  SqlDataAdapter
stuDA
=
new
SqlDataAdapter();
  stuDa.SelectCommand
=
selectCMD;
  如果有参数:create
proc
andSelect
  @StudentId
varchar(10),
  @StudentName
varchar(10),
  As
  Select
*
from
StudentInf
where
StudentId
=
@StudentId
and
StudentName
=
@StudentName
  则参数可以如下添加:
  selectCMD.Parameters.Add(“@StudentId”,
SqlDbType.NVarChar,
10);
  selectCMD.Parameters.Add(“@StudentName”,
SqlDbType.NvarChar,
10);
  如果只有一个参数,也可以这样赋值:
  SqlParameters
onePara
=
selectCMD.Parameters.Add(“@StudentId”,
SqlDbType.NVarChar,
10);
  onePara.Value
=

a
string
”本回答被提问者采纳

求助,sqlserver2005存储过程如何返回这样的结果集

参考技术A   部署CLR存储过程
  上面的示例代码需要进行编译才能通过存储过程来调用。在命令行中执行下面的命令来编译这些代码并创建类库DLL MSSQLTipsCLRLib.dll: 
CSC/target:libraryStoredProcedures.cs/out:MSSQLTipsCLRLib.dll
  假设你使用的是Microsoft .NET框架的第二版本,那么你可以在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下看到CSC.EXE。
  执行下面的T-SQL脚本来创建这个存储过程: 
ALTERDATABASEmssqltips
  SETTRUSTWORTHYON  GO  USEmssqltips  GO  CREATEASSEMBLYMSSQLTipsCLRLib
  FROM'C:\mssqltips\MSSQLTipsCLRLib.dll'
  WITHPERMISSION_SET=EXTERNAL_ACCESS  GO  CREATEPROCEDUREdbo.GetListOfFiles
  @pathNVARCHAR(256)
  ,@patternNVARCHAR(64)
  ,@recursiveBIT  AS  EXTERNALNAMEMSSQLTipsCLRLib.StoredProcedures.GetListOfFiles
  在编译了这个代码到类库(.dll)之后,CREATE ASSEMBLY命令就被执行了,它将这个DLL与ASSEMBLY数据库对象关联起来。FROM条件从句必须指向DLL的实际路径。PERMISSION_SET必须设置为EXTERNAL_ACCESS,因为.NET代码将访问SQL Server 之外的文件系统。TRUSTWORTHY选项被设置为on,以允许外部访问。最后,CREATE PROCEDURE命令的EXTERNAME NAME将这个集合、类和函数与这个存储过程名称关联起来。
  要执行这个存储过程,执行下面的脚本:
EXECdbo.GetListOfFiles'C:\mssqltips','*.*',0
    你将看到类似于下面的输出,这取决于你选择的文件夹的内容;例如,一个只有一列、每一行是一个文件的结果集:  图2  接下来的步骤
  在这里下载示例脚本并执行从一个CLR存储过程返回结果集。
  记住,当在Microsoft .NET框架中有满足你需求的函数时,使用SQL Server的CLR可能是个很好的解决方法。

以上是关于在Net下调用SqlServer2k中存储过程的主要内容,如果未能解决你的问题,请参考以下文章

求助,sqlserver2005存储过程如何返回这样的结果集

ADO.NET 调用 T-SQL 存储过程会导致 SqlTimeoutException

记录实体框架存储过程调用和参数

Asp.net(C#) 获取 执行sql server 语句/存储过程后的 多个返回值?

IBatis.Net使用总结-- IBatis 调用存储过程

.NET存储过程入门