【发布时间】:2014-07-16 19:12:22
【问题描述】:
我正在更新一些旧的遗留代码,但遇到了问题 SqlCommand.ExecuteReader() 方法。问题是它没有返回任何 结果。但是,使用 SqlDataAdapter.Fill(),我从 数据库。我究竟做错了什么?如何使用数据获取结果 读者?
var connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ToString();
using (var sqlConnection = new SqlConnection(connectionString))
{
using (var sqlCommand = new SqlCommand())
{
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandType = CommandType.Text;
sqlCommand.CommandText = "SELECT * FROM MyTable WHERE ID = 1";
sqlConnection.Open();
// This code works.
//var dataTable = new DataTable();
//using (var sqlDataAdapter = new SqlDataAdapter(sqlCommand))
//{
// sqlDataAdapter.Fill(dataTable);
//}
// This code is not working.
using (var sqlDataReader = sqlCommand.ExecuteReader())
{
while (sqlDataReader.Read())
{
// This fails because the data reader has no results.
var id = sqlDataReader.GetInt32(0);
}
}
}
}
【问题讨论】:
-
你试过
sqlDataReader.GetValue(0)吗?这会返回数据吗? -
究竟是什么失败了——什么是错误信息?
-
第一个字段是 int 吗?您可以发布查询检索到的数据吗?那行肯定有数据,但问题是,它长什么样子?
-
第一个字段是不可为空的整数并且是主键,第二和第三个字段是不可为空的十进制类型。 GetValue(0) 方法有效。奇怪的是 GetInt32(0) 没有。
-
如果 GetValue(0) 有效,那么它不会因为没有结果而失败。错误是什么?
标签: c# sql sql-server tsql ado.net