c# - 从数据读取器填充数据表

标签 c# .net ado.net

我正在用 C# (MS VS2008) 做一些基本的事情,我对正确的设计有更多的疑问,而不是具体的代码。

我正在创建一个数据表,然后尝试从数据读取器(基于 SQL 存储过程)加载数据表。我想知道加载数据表的最有效方法是执行 while 语句,还是有更好的方法。

对我来说唯一的缺点是我必须手动输入我想在我的 while 语句中添加的字段,但我也不知道如何自动执行它,因为我不想要 SP 中的所有字段只是选择一些,但在我看来这没什么大不了的。

我在我所做的全部工作下面包含了代码片段,尽管对我来说代码本身并不重要,甚至也不是我要问的内容。此外,我还想知道我的方法,如果我的策略错误/效率低下,我稍后会纠缠代码帮助。

var dtWriteoffUpload = new DataTable();
dtWriteoffUpload.Columns.Add("Unit");
dtWriteoffUpload.Columns.Add("Year");
dtWriteoffUpload.Columns.Add("Period");
dtWriteoffUpload.Columns.Add("Acct");
dtWriteoffUpload.Columns.Add("Descr");
dtWriteoffUpload.Columns.Add("DEFERRAL_TYPE");
dtWriteoffUpload.Columns.Add("NDC_Indicator");
dtWriteoffUpload.Columns.Add("Mgmt Cd");
dtWriteoffUpload.Columns.Add("Prod");
dtWriteoffUpload.Columns.Add("Node");
dtWriteoffUpload.Columns.Add("Curve_Family");
dtWriteoffUpload.Columns.Add("Sum Amount");
dtWriteoffUpload.Columns.Add("Base Curr");
dtWriteoffUpload.Columns.Add("Ledger");  

cmd = util.SqlConn.CreateCommand();
cmd.CommandTimeout = 1000;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_writeoff_data_details";
cmd.Parameters.Add("@whoAmI", SqlDbType.VarChar).Value = 

WindowsIdentity.GetCurrent().Name;

cmd.Parameters.Add("@parmEndDateKey", SqlDbType.VarChar).Value = myMostRecentActualDate;
cmd.Parameters.Add("@countrykeys", SqlDbType.VarChar).Value = myCountryKey;
cmd.Parameters.Add("@nodekeys", SqlDbType.VarChar).Value = "1,2";
break;


dr = cmd.ExecuteReader();
while (dr.Read())                    
{
    dtWriteoffUpload.Rows.Add(dr["country name"].ToString(), dr["country key"].ToString());
}

最佳答案

您可以使用接受IDataReaderLoad() 方法直接从数据读取器加载DataTable

var dataReader = cmd.ExecuteReader();
var dataTable = new DataTable();
dataTable.Load(dataReader);

关于c# - 从数据读取器填充数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18961938/

相关文章:

c# - C# 中的 Deedle 数据帧按行切片

c# - WPF:如何区分 Window.Close() 调用和系统菜单关闭操作?

c# - 调用从 C# 获取指针的 C++ 函数

c# - 两个远程 sql 连接时 Transactionscope 不工作

c# - 如何实现具有容差的 IEqualityComparer<PointF>

c# - 无法在 ASP.NET Core 中使用 webpack 中间件

.net - MySQL 没有正确存储外来字符

c# - 无论 .NET 版本/环境如何,都能找到 ildasm.exe 和 ilasm.exe 文件的文件路径的保证方法?

c# - 如何使用匿名 LINQ 结果填充 DataTable

oracle - TransactionScope 和存储过程?