小编给大家分享一下怎么使用DataTable作为存储过程的参数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

  因为SQL Server 2000中没有内置类似于 split 的函数,只好自己处理,将前台数据集中的一列用逗号拆分存到一个List中,再转化为字符串传给存储过程,很是麻烦。下面亿速云小编来讲解下如何使用DataTable作为存储过程的参数?

  如何使用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、建立数据库、表、类型、存储过程

IFNOTEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=OBJECT_ID('Users')ANDOBJECTPROPERTY(id,N'IsUserTable')=1)  BEGIN  CREATETABLEdbo.Users  (  UserIDINTIDENTITY(-1,-1)NOTNULL,  UserNameVARCHAR(20)NOTNULL,  UserPassVARCHAR(20)NOTNULL,  SexBITNULL,  AgeSMALLINTNULL,  CONSTRAINTPK_Users_UserIDPRIMARYKEY(UserID)  )  END  IFNOTEXISTS(SELECT*FROMsys.table_typesWHEREname='UserTable'ANDis_user_defined=1)  BEGIN  CREATETYPEUserTableASTABLE (  UserNameVARCHAR(20)NOTNULL,  UserPassVARCHAR(20)NOTNULL,  SexBITNULL,  AgeSMALLINTNULL  )  END  GO

  如何使用DataTable作为存储过程的参数

IFEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=OBJECT_ID('sp_InsertSingleUser')ANDOBJECTPROPERTY(id,N'IsProcedure')=1)  BEGIN  DROPPROCEDUREdbo.sp_InsertSingleUser END  GO  CREATEPROCEDUREdbo.sp_InsertSingleUser  (  @UserUserTableREADONLY  )  AS    SETXACT_ABORTON  BEGINTRANSACTION    INSERTINTOdbo.Users(UserName,UserPass,Sex,Age)  SELECTUserName,UserPass,Sex,AgeFROM@User    COMMITTRANSACTION  SETXACT_ABORTOFF  GO

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

publicvoidfnInsertSingleUser(DataTablev_dt)  {  try  {  SqlConnectioncn=newSqlConnection(CONN);  SqlCommandcmd=cn.CreateCommand();  cmd.CommandType=CommandType.StoredProcedure;  cmd.CommandText=@"sp_InsertSingleUser";  SqlParameterp=cmd.Parameters.AddWithValue("@User",v_dt);    DataSetds=newDataSet();  SqlDataAdapterda=newSqlDataAdapter(cmd);  da.Fill(ds);  }  catch(Exceptionex)  {  throwex;  }  }

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

以上是“怎么使用DataTable作为存储过程的参数”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!