日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQLServer2008中使用DataTable作為存儲過程的參數(shù)

SQL Server 2008中使用DataTable作為存儲過程的參數(shù)的相關(guān)知識是本文我們主要要介紹的內(nèi)容,筆者在最近工作中寫了幾個存儲過程,需要向存儲過程中傳遞字符串,因為SQL Server 2000中沒有內(nèi)置類似于split 的函數(shù),只好自己處理,將前臺數(shù)據(jù)集中的一列用逗號拆分存到一個List中,再轉(zhuǎn)化為字符串傳給存儲過程,很是麻煩。今天看了下SQL Server 2008的新特性,發(fā)現(xiàn)有表變量的使用,及其將DataTable作為參數(shù)的用法,就嘗試了一下,簡單談?wù)勑牡谩?/p>

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比西夏網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式西夏網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋西夏地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。

一、測試環(huán)境

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。

二、測試概述

測試項目很簡單,就是添加新用戶

三、準備數(shù)據(jù)

建立數(shù)據(jù)庫、表、類型、存儲過程

代碼:

 
 
 
 
  1. IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Users]') AND type in (N'U'))  
  2. DROP TABLE [dbo].[Users]  
  3. CREATE TABLE [dbo].[Users](  
  4.  [UserID] [int] IDENTITY(-1,-1) NOT NULL,  
  5.  [UserName] [varchar](20) NOT NULL,  
  6.  [UserPass] [varchar](20) NOT NULL,  
  7.  [Sex] [bit] NULL,  
  8.  [Age] [smallint] NULL,  
  9.  CONSTRAINT [PK_Users_UserID] PRIMARY KEY CLUSTERED   
  10. (  
  11. [UserID] ASC  
  12. )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]  
  13. ) ON [PRIMARY]  
  14.  
  15. IF  EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'UserTable' AND ss.name = N'dbo')  
  16. DROP TYPE [dbo].[UserTable]  
  17. CREATE TYPE [dbo].[UserTable] AS TABLE(  
  18.  [UserName] [varchar](20) NOT NULL,  
  19.  [UserPass] [varchar](20) NOT NULL,  
  20.  [Sex] [bit] NULL,  
  21.  [Age] [smallint] NULL  
  22. )  
  23.  
  24. IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_InsertSingleUser]') AND type in (N'P', N'PC'))  
  25. DROP PROCEDURE [dbo].[sp_InsertSingleUser]  
  26. GO  
  27. CREATE PROCEDURE [dbo].[sp_InsertSingleUser]   
  28. (   
  29. @User UserTable READONLY   
  30. )   
  31. AS   
  32. SET XACT_ABORT ON   
  33. BEGIN TRANSACTION   
  34. INSERT INTO dbo.Users(UserName, UserPass, Sex, Age)   
  35. SELECT UserName, UserPass, Sex, Age FROM @User   
  36. COMMIT TRANSACTION   
  37. 前臺搭建好表單,后臺主要是一個函數(shù):  
  38.  
  39. 代碼  
  40.  
  41. public void fnInsertSingleUser(DataTable v_dt)   
  42. {   
  43. try   
  44. {   
  45. SqlConnection cn = new SqlConnection(CONN);   
  46. SqlCommand cmd = cn.CreateCommand();   
  47. cmd.CommandType = CommandType.StoredProcedure;   
  48. cmd.CommandText = @"sp_InsertSingleUser";   
  49. SqlParameter p = cmd.Parameters.AddWithValue("@User", v_dt);   
  50.  
  51. DataSet ds = new DataSet();   
  52. SqlDataAdapter da = new SqlDataAdapter(cmd);   
  53. da.Fill(ds);   
  54. }   
  55. catch (Exception ex)   
  56. {   
  57. throw ex;   
  58. }   

點擊【添加】按鈕時調(diào)用存儲過程。測試是完成了,也很簡單,傳遞一個DataTable做參數(shù)確實很方便吧,能夠輕松完成原先需要很多編碼的工 作。關(guān)于表變量還是有些道道的,如創(chuàng)建時判斷其是否存在的語句,刪除表變量前需要先刪除引用表變量的存儲過程等。

一般開發(fā)我大多會選擇用臨時表,處理起來 比較方便,表變量可以作為存儲過程參數(shù)確實是一個獨特的優(yōu)勢,希望在SQL Server的未來版本中能夠繼續(xù)增強對表變量和臨時表的支持,尤其是早日支持臨時表調(diào)試。

關(guān)于SQL Server 2008數(shù)據(jù)庫中使用DataTable作為存儲過程的參數(shù)的相關(guān)知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!


網(wǎng)站標題:SQLServer2008中使用DataTable作為存儲過程的參數(shù)
網(wǎng)站路徑:http://m.5511xx.com/article/cccopoe.html