首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c#中使用微软基础架构库将数据表添加到存储过程的输入参数中

在c#中使用微软基础架构库将数据表添加到存储过程的输入参数中
EN

Stack Overflow用户
提问于 2017-12-21 03:47:02
回答 2查看 688关注 0票数 2

我已经用c#写了一个方法,我想在sql数据库表中插入一些数据。这个方法接受一个Datatable参数,我想把它作为参数传递给存储过程,但是有一些语法问题。请看下面的代码-

代码语言:javascript
复制
public int SaveProcessingRecords(long policyDownloadId,string comment, string commentBy,string commentStatus, string questionType, DataTable policyResponseMappingTable)
{
    Database db = DatabaseFactory.CreateDatabase(DLConnection.GetConnection());
    DbCommand dbCmd = db.GetStoredProcCommand("ProcessingAreaINSERT");
    db.AddInParameter(dbCmd, "@policyDownloadId", DbType.Int64, policyDownloadId);
    db.AddInParameter(dbCmd, "@comment", DbType.String, comment);
    db.AddInParameter(dbCmd, "@commentBy", DbType.String, commentBy);
    db.AddInParameter(dbCmd, "@commentStatus", DbType.String, commentStatus);
    db.AddInParameter(dbCmd, "@questionType", DbType.String, questionType);
    db.AddInParameter(dbCmd, "@policyResponseMappingTable", SqlDbType.Structured, policyResponseMappingTable);

    return db.ExecuteNonQuery(dbCmd);
}
EN

回答 2

Stack Overflow用户

发布于 2017-12-21 04:29:32

我找到了解决方案(Pass (Data Table) to SQL Server From ASP.NET using Enterprise Library

代码语言:javascript
复制
SqlParameter param = new SqlParameter("@policyResponseMappingTable", policyResponseMappingTable);
            param.SqlDbType = SqlDbType.Structured;
            dbCmd.Parameters.Add(param);
票数 2
EN

Stack Overflow用户

发布于 2017-12-21 04:29:55

将声明更改为

代码语言:javascript
复制
SqlDatabase db = (SqlDatabase)DatabaseFactory.CreateDatabase(DLConnection.GetConnection());

Database更加通用,因此它不知道任何特定于SQL Server的参数。

Enterprise Library试图“隐藏”特定于实现的细节,比如您使用的是哪个数据库。但在这种情况下,这是行不通的。假设您正在使用SQL Server,并且需要添加特定于SQL server的参数类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47913368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档