[C#新手入门 三] 使用DataTable作为存储过程的参数

3348人阅读 评论(0) 收藏 举报
分类:

http://www.cnblogs.com/zhangchenliang/archive/2011/05/19/2050752.html

一、测试环境

1Windows Server 2008 R2 DataCenter

2Visual Studio 2008 Team System With SP1

3SQL 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


 

 

 

前台搭建好表单,后台主要是一个函数:

1     public void fnInsertSingleUser(DataTable v_dt)
2
    {
3         try

4         {
5             SqlConnection cn=new
SqlConnection(CONN);
6             SqlCommand cmd=
cn.CreateCommand();
7             cmd.CommandType=
CommandType.StoredProcedure;
8             cmd.CommandText=@"sp_InsertSingleUser"
;
9             SqlParameter p= cmd.Parameters.AddWithValue("@User"
, v_dt);
10

11             DataSet ds =new DataSet();
12             SqlDataAdapter da=new
SqlDataAdapter(cmd);
13
            da.Fill(ds);
14
        }
15         catch
(Exception ex)
16
        {
17            throw
ex;
18
        }
19     }
 

  点击【添加】按钮时调用存储过程。测试是完成了,也很简单,传递一个DataTable做参数确实很方便吧,能够轻松完成原先需要很多编码的工 作。关于表变量还是有些道道的,如创建时判断其是否存在的语句,删除表变量前需要先删除引用表变量的存储过程等。一般开发我大多会选择用临时表,处理起来 比较方便,表变量可以作为存储过程参数确实是一个独特的优势,希望在SQL  Server的未来版本中能够继续增强对表变量和临时表的支持,尤其是早日支持临时表调试:)

查看评论

bootstrap Datatable自定义表格工具栏

Bootstrap DataTable提供的表格样式是这样的: 但是如果想实现
  • Switch_Man
  • Switch_Man
  • 2014-08-27 16:50:47
  • 6716

dataTable的一般配置

dataTable的一般配置,mark一下,这玩意儿不好用。
  • dmcpxy
  • dmcpxy
  • 2015-08-01 19:39:15
  • 783

遍历datatable的几种方法(C# )

转载 遍历datatable的方法2009-09-08 10:02方法一:      DataTable dt = dataSet.Tables[0];      for(int...
  • huanglin529
  • huanglin529
  • 2016-11-25 13:42:11
  • 481

15个不错的jQuery的table表格操作插件

1.DataTables-强大的jQuery表格插件   DataTables是提供了大量特性的强大jQuery表格插件。例如:你可以自动轻松筛选、Ajax预读取数据、分页、列排序、高亮排序列、...
  • houpengfei111
  • houpengfei111
  • 2013-05-23 09:55:47
  • 7613

.net中使用存储过程output值和返回值

数据库中使用output值和return值: ---------------------------------------------------------数获存储过程中的OUTPUT参数和返回值...
  • ai_li7758521
  • ai_li7758521
  • 2009-12-29 23:27:00
  • 5098

C#利用DataTable存取数据

DataTable使用介绍:http://www.dotnetperls.com/datatable SQL结果存到DataTable例子:http://stackoverflow.com/quest...
  • tanzhangwen
  • tanzhangwen
  • 2015-04-21 11:11:15
  • 3980

存储过程参数为DataTable

开发要求,前台一次性将多笔记录存入数据库中。也就是说,将一个DataTable作为一个参数传入。而数据库的存储过程,也得有一个表数据类型(sql2008) http://www.cnblogs.com...
  • CsethCRM
  • CsethCRM
  • 2013-12-25 12:56:39
  • 3548

Datatables 自定义按钮

Datatables 自定义按钮方法有如下: 1、 $('#eq_table').DataTable({ data: tmp, columns:...
  • yangzhai
  • yangzhai
  • 2017-03-07 11:19:52
  • 1366

JQuery DataTables 自定义按钮实现

JQuery DataTables 自定义按钮的使用; JQuery DataTables 自定义按钮官网实例
  • shuai_wy
  • shuai_wy
  • 2017-11-17 19:39:13
  • 1208

用存储过程保存多条信息(DataTable作为参数)

西安羚羊网络科技技术文档
  • xiangwenfly
  • xiangwenfly
  • 2014-08-14 18:44:22
  • 702
    个人资料
    持之以恒
    等级:
    访问量: 21万+
    积分: 2196
    排名: 2万+
    最新评论