SQL查询结果到数组

时间:2019-04-02 05:01:08

标签: c# sql

我编写了以下内容,以尝试执行sql查询并将结果存储在Array中:

public static ArrayList DbQueryToArry()
        {
            string SqlCString = myConnString;
            SqlConnection connection = null;

            ArrayList valuesList = new ArrayList();

            connection = new SqlConnection(SqlCString);
            connection.Open();

            SqlCommand command = new SqlCommand("Select CLIENTNO, ACCOUNT_Purpose from audit.ACCOUNTS_AUDIT", connection);
            SqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                valuesList.Add(Convert.ToInt32(reader[0].ToString()));
            }
            return valuesList;
        }

但是运行以下

var myArray = DbQueryToArry();
Console.WriteLine(myArray.ToString()); 

不返回查询结果。

1 个答案:

答案 0 :(得分:3)

您将需要通过string.Join或类似的方式手动加入他们

  

连接指定数组的元素或a的成员   集合,在每个元素之间使用指定的分隔符或   成员。

Console.WriteLine(string.Join(",",myArray.ToArray())); 

您的版本无法正常工作的原因是,Console.Writeline对于不同类型的设备有很多重载,但是当找不到特定的分辨率匹配项时,它会退回到WriteLine(Object)

WriteLine(Object value)的源代码如下(可以在here中找到)

public virtual void WriteLine(Object value) {
   if (value==null) {
      WriteLine();
   }
   else {
      // Call WriteLine(value.ToString), not Write(Object), WriteLine().
      // This makes calls to WriteLine(Object) atomic.
      IFormattable f = value as IFormattable;
      if (f != null)
         WriteLine(f.ToString(null, FormatProvider));
      else
         WriteLine(value.ToString());
   }
}

注意它如何调用value.ToString()吗?

Object.ToString Method

  

返回代表当前对象的字符串。

     

备注

     

Object.ToString是.NET Framework中的主要格式化方法。   它将对象转换为其字符串表示形式,以便   适合展示。

ArrayList没有ToString()的重载,它可以预期您要显示的内容,因此它依赖于默认值。

The default Object.ToString() method

  

ToString方法的默认实现返回完整的   对象类型的限定名称

这将使我讲到下一个要点,不要使用ArrayList,使用通用数组int[]List<int>,您会发现它更加有趣和有意义( 100级