【发布时间】:2015-11-03 17:40:48
【问题描述】:
我有一个正常运行的存储过程,它在手动执行时返回正确的数据。输出中有几行数据。但是,我的以下代码总是导致没有数据行被添加到 DataTable。
var commandString = string.Format(@"EXEC MyStoredProcedure {0}", SomeParameter);
var dataTable = new DataTable();
using (var connection = new SqlConnection(ConnectionString))
{
connection.Open();
using (var adapter = new SqlDataAdapter(commandString, ConnectionString))
{
using (new SqlCommandBuilder(adapter))
{
adapter.Fill(dataTable);
adapter.Update(dataTable);
}
}
}
var result = (from DataRow row in dataTable.Rows
select new MyModelClass
{
SomeString = (string) row["SomeString"],
SomeValue = (string) row["SomeValue"],
}).ToList();
Debug.WriteLine("Results: " + result.Count);
我不确定为什么代码会导致没有数据行。我哪里错了?我怀疑这是因为我对DataTable 的工作原理有不正确的理解。我应该如何修复代码?
【问题讨论】:
-
您无需致电
Update来填写DataSet。这仅用于通过对DataSet的相关更改来更新数据库。 -
你有什么异常吗?
-
没有例外
-
这不是使用参数的方式。
-
您需要参数化您的代码,而不是构建一个字符串并执行它。你所拥有的很容易受到 sql 注入的攻击。
标签: c# sql sql-server datatable ado.net