Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否将多个列值从SqlReader复制到数组?_C#_Sql - Fatal编程技术网

C# 是否将多个列值从SqlReader复制到数组?

C# 是否将多个列值从SqlReader复制到数组?,c#,sql,C#,Sql,如何生成包含所有列信息的字符串数组。 此查询将返回包含多列的单行 var rowLines = new List<string>(); try { using (SqlConnection connection = new SqlConnection(GetConnectionString())) { string query = "SELECT I1,I2,I3,I4,

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

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);
        }
var rowLines=new List();
尝试
{
使用(SqlConnection=newsqlconnection(GetConnectionString()))
{
string query=“从LABEL_OUT中选择I1、I2、I3、I4、I5、I6、I7、I8、I9、I10、I11、I12、I13、I14、I15,其中LABEL_NAME='“+labelName+”;
使用(SqlCommand=newsqlcommand(查询、连接))
{
connection.Open();
使用(SqlDataReader=command.ExecuteReader())
{
while(reader.Read())
{
添加(读取器[0].ToString());
}
}
}
}
}
捕获(例外情况除外)
{
System.Windows.MessageBox.Show(例如Message);
}

在这里,行将包含所有列值,如I1、I2、…I15

如果您确定只取一行,则可以使用
字段计数在
读取器上循环,并将每个元素添加到
列表上。最后,您可以将其作为
数组
返回

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();
var rowLines=new List();
if(reader.Read())
{
对于(int i=0;i
最简单的方法可能是使用
DbDataReader.GetValues(object[])
,它用每列中的值填充预先存在的数组:

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

您还应该放置
SqlConnection
SqlCommand
,以确保正确释放资源。您已经将第一列添加到列表中。问题是什么?以同样的方式添加其他列。或者使用datasetI。我想你忘记告诉预期的结果了output@DreamTeK数据集
的次数
是解决任何问题的好方法,但问题的数量却非常小。。。