首页 > 解决方案 > SQL查询结果到数组

问题描述

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

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()); 

不返回查询结果..

标签: c#sql

解决方案


您将需要手动加入它们string.Join或类似的东西:

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

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

您的版本不起作用的原因是,Console.Writeline对于不同的类型有一堆重载,但是WriteLine(Object)当它找不到特定的分辨率匹配时它会退回。

源代码WriteLine(Object value)如下(可以在这里找到)。

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 方法

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

评论

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

AnArrayList对 ToString() 没有重载,它能够预测您想要显示的内容,因此它依赖于默认值。

默认的 Object.ToString() 方法

ToString 方法的默认实现返回 Object 类型的完全限定名

这让我想到了下一点,不要使用ArrayList,使用通用数组int[],否则List<int>你会发现它更有趣和更有价值(有趣的 100 级


推荐阅读