• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    将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行转列示例分享
    上一篇:sql server 2008中的apply运算符使用方法
    下一篇:Sql Server 2008完全卸载方法(其他版本类似)第1/2页
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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