• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#将Datatable作为参数,传入存储过程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
//创建一个静态方法 
public static DataSet fnInsertSingleUser(DataTable v_dt, params string[] param) {
try { SqlConnection cn = new SqlConnection(connectionString);//connertionString链接数据库字符串 SqlCommand cmd = cn.CreateCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = @"" + param[0]; SqlParameter p = cmd.Parameters.AddWithValue("@User", v_dt);
          //参数可以随意增加 SqlParameter pCode
= cmd.Parameters.AddWithValue("@pCode", param[1]); SqlParameter gsdm = cmd.Parameters.AddWithValue("@gsdm", param[2]); SqlParameter khdm = cmd.Parameters.AddWithValue("@khdm", param[3]); SqlParameter qy = cmd.Parameters.AddWithValue("@qy", param[4]); DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); return ds; } catch (Exception ex) { throw ex; } }

SQL

IF EXISTS ( SELECT  A = 1
            FROM    sys.objects
            WHERE   name = 'PRCreate '
                    AND type = 'P' ) 
    DROP PROCEDURE dbo.PRCreate
 
go
 
IF EXISTS ( SELECT  A = 1
            FROM    sys.table_types
            WHERE   name = 'tempPR '
                    AND is_user_defined = 1 ) 
    DROP TYPE dbo.tempPR


go

CREATE TYPE dbo.tempPR AS TABLE
(
PT_PCURR  decimal(15, 2), --这2个字段必须与传入的C# datatable中 字段的先后顺序一致
MATNR   varchar(18)--
)


go


CREATE PROCEDURE dbo.PRCreate
    (
      @User AS dbo.tempPR READONLY, --C# datatable参数
      @pCode varchar(50),
      @gsdm varchar(50),
      @khdm varchar(50),
      @qy varchar(50)
    )
AS 
    BEGIN
  SELECT * FROM @User
  END

调用

            DataSet ds = new DataSet();
            ds = SqlHelper.fnInsertSingleUser(dt, "PRCreate", param[0], param[2], param[3], param[4]);//在存储过程中处理,返回结果集

调用时注意传入的参数必须与存储过程中 @User @pCode @gsdm @khdm @qy 的参数一致(见第一段代码)

 

重点:

1、就是传入存储过程的Datatable参数的字段先后顺序,必须与在存储过程中创建的表字段的先后顺序一致

2、调试:用一句select语句,返回一个DataSet到C#中看看,传入datatable是否正确




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C语言第一次博客作业发布时间:2022-07-14
下一篇:
win10系统故障代码:0xc000014c发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap