首页数据库将DataTable作为存储过程参数的用法实例详解

将DataTable作为存储过程参数的用法实例详解

时间2024-02-28 19:36:03发布访客分类数据库浏览376
导读:收集整理的这篇文章主要介绍了将DataTable作为存储过程参数的用法实例详解,觉得挺不错的,现在分享给大家,也给大家做个参考。 最近工作中写了几个存储过程,需要向存储过程中传递字符串,...
收集整理的这篇文章主要介绍了将DataTable作为存储过程参数的用法实例详解,觉得挺不错的,现在分享给大家,也给大家做个参考。 最近工作中写了几个存储过程,需要向存储过程中传递字符串,因为SQL Server 2000中没有内置类似于 splIT 的函数,只好自己处理,将前台数据集中的一列用逗号拆分存到一个Liststring> 中,再转化为字符串传给存储过程,很是麻烦。今天看了下SQL Server 2008的新特性,发现有表变量的使用,及其将DataTable作为参数的用法,就尝试了一下,简单谈谈心得。
示例代码下载

一、测试环境
1、Windows Server 2008 R2 Datacenter
2、Visual Studio 2008 Team System With SP1
3、SQL Server 2008 Enterprise Edition With SP1
由于是SQL Server 2008新特性,所以只能用2008。
二、测试概述
测试项目很简单,就是添加新用户
 
三、准备数据
1、建立数据库、表、类型、存储过程
复制代码 代码如下:
IF NOT EXISTS(SELECT * From dbo.sysobjects WHERE id = OBJECT_ID('Users') AND OBJECTPROPERTY(id, N'ISUSErTable') = 1)
BEgin
CREATE TABLE dbo.Users
(
UserID INT IDENTITY(-1, -1) NOT NULL,
UserName VArchAR(20) NOT NULL,
UserPass VARCHAR(20) NOT NULL,
Sex BIT NULL,
Age SMALLINT NULL,
CONSTRaiNT PK_Users_UserID Primary KEY(UserID)
)
END
IF NOT EXISTS(SELECT * From sys.table_types WHERE name = 'UserTable' AND is_user_defined = 1)
BEGIN
CREATE TYPE UserTable AS TABLE
(
UserName VARCHAR(20) NOT NULL,
UserPass VARCHAR(20) NOT NULL,
Sex BIT NULL,
Age SMALLINT NULL
)
END
GO

复制代码 代码如下:
IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('sp_InsertSingleUser') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
BEGIN
DROP PROCEDURE dbo.sp_InsertSingleUser
END
GO
CREATE PROCEDURE dbo.sp_InsertSingleUser
(
@User UserTable READONLY
)
AS
SET XACT_ABORT ON
BEGIN TRANSACTION
INSERT INTO dbo.Users(UserName, UserPass, Sex, Age)
SELECT UserName, UserPass, Sex, Age FROM @User
COMMIT TRANSACTION
SET XACT_ABORT OFF
GO

前台搭建好表单,后台主要是一个函数:
复制代码 代码如下:
public void fnInsertSingleUser(DataTable v_dt)
{
try
{
SqlConnection cn = new SqlConnection(CONN);
SqlCommand cmd = cn.CreateCommand();
cmd.COMmandType = CommandType.StoredProcedure;
cmd.CommandText = @"sp_InsertSingleUser";
SqlParameter p = cmd.Parameters.AddWithValue("@User", v_dt);
10
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
catch (Exception ex)
{
throw ex;
}
}

点击【添加】按钮时调用存储过程。测试是完成了 您可能感兴趣的文章:
  • 比较2个datatable内容是否相同的方法
  • datatable生成excel和excel插入图片示例详解
  • c#将list类型转换成DataTable方法示例
  • 多个jquery.datatable共存,checkbox全选异常的快速解决方法
  • DataTables List互相转换的实现类示例
  • 使用DataTable.Select 方法时,特殊字符的转义方法分享
  • ASP.NET中DataTable与DataSet之间的转换示例
  • 多个datatable共存造成多个表格的checkbox都被选中
  • datatable行转列示例分享
  • @H_418_126@

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 将DataTable作为存储过程参数的用法实例详解
本文地址: https://pptw.com/jishu/631853.html
Sql Server 2008安裝图文教程 Sql Server 2008完全卸载方法(其他版本类似)第1/2页

游客 回复需填写必要信息