我已经用c#写了一个方法,我想在sql数据库表中插入一些数据。这个方法接受一个Datatable参数,我想把它作为参数传递给存储过程,但是有一些语法问题。请看下面的代码-
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);
}发布于 2017-12-21 04:29:32
我找到了解决方案(Pass (Data Table) to SQL Server From ASP.NET using Enterprise Library
SqlParameter param = new SqlParameter("@policyResponseMappingTable", policyResponseMappingTable);
param.SqlDbType = SqlDbType.Structured;
dbCmd.Parameters.Add(param);发布于 2017-12-21 04:29:55
将声明更改为
SqlDatabase db = (SqlDatabase)DatabaseFactory.CreateDatabase(DLConnection.GetConnection());Database更加通用,因此它不知道任何特定于SQL Server的参数。
Enterprise Library试图“隐藏”特定于实现的细节,比如您使用的是哪个数据库。但在这种情况下,这是行不通的。假设您正在使用SQL Server,并且需要添加特定于SQL server的参数类型。
https://stackoverflow.com/questions/47913368
复制相似问题