将DataTable作为存储过程参数的用法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了将DataTable作为存储过程参数的用法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2787字,纯文字阅读大概需要4分钟。
内容图文
![将DataTable作为存储过程参数的用法](/upload/InfoBanner/zyjiaocheng/565/e31c44385739409c94864b580ce04b69.jpg)
比较新奇的 用法 。 最近工作中写了几个 存储 过程 ,需要向 存储 过程 中传递字符串,因为 SQL Server 2000 中没有内置类于 split 的函数,只好自己处理,将前台数据集中的一列用逗号拆分存到一个 Liststring 中,再转化为字符串传给 存储 过程 ,很是麻烦
比较新奇的用法。
最近工作中写了几个存储过程,需要向存储过程中传递字符串,因为SQL Server 2000中没有内置类似于
split 的函数,只好自己处理,将前台数据集中的一列用逗号拆分存到一个List
示例代码下载
一、测试环境
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、建立数据库、表、类型、存储过程
1 IF NOT EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('Users') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
2 BEGIN
3 CREATE TABLE dbo.Users
4 (
5 UserID INT IDENTITY(-1, -1) NOT NULL,
6 UserName VARCHAR(20) NOT NULL,
7 UserPass VARCHAR(20) NOT NULL,
8 Sex BIT NULL,
9 Age SMALLINT NULL,
10 CONSTRAINT PK_Users_UserID PRIMARY KEY(UserID)
11 )
12 END
13 IF NOT EXISTS(SELECT * FROM sys.table_types WHERE name = 'UserTable' AND is_user_defined = 1)
14 BEGIN
15 CREATE TYPE UserTable AS TABLE
16 (
17 UserName VARCHAR(20) NOT NULL,
18 UserPass VARCHAR(20) NOT NULL,
19 Sex BIT NULL,
20 Age SMALLINT NULL
21 )
22 END
23 GO
24
1 IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('sp_InsertSingleUser') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
2 BEGIN
3 DROP PROCEDURE dbo.sp_InsertSingleUser
4 END
5 GO
6 CREATE PROCEDURE dbo.sp_InsertSingleUser
7 (
8 @User UserTable READONLY
9 )
10 AS
11
12 SET XACT_ABORT ON
13 BEGIN TRANSACTION
14
15 INSERT INTO dbo.Users(UserName, UserPass, Sex, Age)
16 SELECT UserName, UserPass, Sex, Age FROM @User
17
18 COMMIT TRANSACTION
19 SET XACT_ABORT OFF
20 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作为存储过程参数的用法全部内容,希望文章能够帮你解决将DataTable作为存储过程参数的用法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。