将多个列值从 SqlReader 复制到数组?

  • 本文关键字:复制 数组 SqlReader c# sql
  • 更新时间 :
  • 英文 :


如何生成一个包含所有列信息的字符串数组。 此查询将返回包含多列的单行

var rowLines = new List<string>();
try
{
using (SqlConnection connection = new SqlConnection(GetConnectionString()))
{
string query = "SELECT I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12,I13,I14,I15 FROM LABEL_OUT WHERE LABEL_NAME='" + labelName + "'";
using (SqlCommand command = new SqlCommand(query, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
rowLines.Add(reader[0].ToString());
}
}
}
}
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.Message);
}

这里 rowLines 将包含所有列值,例如 I1,I2,.....I15

可能最简单的方法是使用DbDataReader.GetValues(object[]),它使用每列中的值填充预先存在的数组:

var vals = new object[reader.FieldCount];
while (reader.Read())
{
reader.GetValues(vals);
// ... do something with the values
}

如果您确定要采用单行,则可以使用FieldCountreader上循环,并在List<string>上添加每个元素。最后,您可以将其作为array返回。

var rowLines = new List<string>();
if (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
rowLines.Add(reader.IsDBNull(i) ? string.Empty : reader[i].ToString());
}
}
return rowLines.ToArray();