如何通过SQL中的索引读取某些列的数据?

时间:2017-05-31 12:02:29

标签: c# sql

我是C#和SQL的新手,我正在使用Windows窗体。

我的表格MyTable20 columns,我们说我们不知道列名。

我想说我想读取第13列的数据。

任何人都知道如何根据索引读取某个column的所有数据,我的意思是如何从column数字读取数据?

谢谢。

2 个答案:

答案 0 :(得分:1)

你有两个选择。第一种是读取表的元数据并确定所需列的名称。

第二种是使用select *,然后在每行中选择第n个返回值。

但是,对于不想知道列名的应用程序存在一些疑问。按位置访问列是个坏主意。实际上,SQL语言中的一个位置 - 使用ORDER BY中的位置 - 已在标准中弃用。

答案 1 :(得分:1)

使用SqlConnectionSqlCommand时,您可以生成一个数据阅读器,允许您按索引接近列值(每行)。

出于示例的目的,我假设您期望string值,但解决方案类似于任何其他类型。

List<String> column14Values = new List<String>();

using (var connection = new SqlConnection(connectionString))
{
    connection.Open();

    using(var command = new SqlCommand(myQuery, connection))
    {
          var reader = command.ExecuteReader();

          while(reader.Read())
          {
               string theFourteenthColumnValue = reader.GetFieldValue<string>(13);

               column14Values.Add(theFourteenthColumnValue); 
          }
    }
}

return column14Values;

高度建议更改SQL SELECT语句,只返回所需的列;这将大大减少从数据库返回的数据量。

我的解决方案有效,直接回答了您的问题;但它不是检索单个列数据的最佳解决方案。