最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解

 更新時(shí)間:2013年05月23日 18:11:07   作者:  
需要向存儲(chǔ)過(guò)程中傳遞字符串,今天看了下SQL Server 2008的新特性,發(fā)現(xiàn)有表變量的使用,及其將DataTable作為參數(shù)的用法,下面與大家分享下
最近工作中寫(xiě)了幾個(gè)存儲(chǔ)過(guò)程,需要向存儲(chǔ)過(guò)程中傳遞字符串,因?yàn)镾QL Server 2000中沒(méi)有內(nèi)置類似于 split 的函數(shù),只好自己處理,將前臺(tái)數(shù)據(jù)集中的一列用逗號(hào)拆分存到一個(gè)List<string>中,再轉(zhuǎn)化為字符串傳給存儲(chǔ)過(guò)程,很是麻煩。今天看了下SQL Server 2008的新特性,發(fā)現(xiàn)有表變量的使用,及其將DataTable作為參數(shù)的用法,就嘗試了一下,簡(jiǎn)單談?wù)勑牡谩?
示例代碼下載

一、測(cè)試環(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。
二、測(cè)試概述
測(cè)試項(xiàng)目很簡(jiǎn)單,就是添加新用戶
 
三、準(zhǔn)備數(shù)據(jù)
1、建立數(shù)據(jù)庫(kù)、表、類型、存儲(chǔ)過(guò)程
復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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

前臺(tái)搭建好表單,后臺(tái)主要是一個(gè)函數(shù):
復(fù)制代碼 代碼如下:

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;
}
}

點(diǎn)擊【添加】按鈕時(shí)調(diào)用存儲(chǔ)過(guò)程。測(cè)試是完成了

相關(guān)文章

最新評(píng)論

庆阳市| 浮山县| 唐山市| 山东| 靖江市| 信阳市| 中卫市| 应城市| 邹平县| 岚皋县| 略阳县| 邵阳市| 平和县| 西乌珠穆沁旗| 双桥区| 绥宁县| 林口县| 九龙城区| 珲春市| 托里县| 页游| 若尔盖县| 丹阳市| 东乡族自治县| 宜阳县| 伊川县| 收藏| 新田县| 汽车| 咸丰县| 大理市| 惠安县| 宝鸡市| 呼伦贝尔市| 泰州市| 濮阳县| 郎溪县| 思茅市| 鹿泉市| 海林市| 鄄城县|