如何使用c#将SQL SERVER数据库的varchar值检索到数组

时间:2015-06-04 05:48:24

标签: c# asp.net sql-server

我有一个数据库名称“费用”,我已经声明了不同的列说tutionfee,计算机费用,admissiofee等。

现在我只想将tutionfee的值检索到数组。所以我可以在任何地方使用它。我正在使用C#

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand check = new SqlCommand("select * from fees where admno = @admno", con);

5 个答案:

答案 0 :(得分:1)

如果您知道select命令的确切行数,则可以创建一个字符串数组并使用SqlDataReader在循环中获取此列值。

假设您的select语句返回10行,您可以像使用它一样使用

var array = new string[10];

using(var con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
using(var check = new SqlCommand("select * from fees where admno = @admno", con))
{
    // Add your parameter value.

    using(var reader = check.ExecuteReader())
    {
       int i = 0;
       while(reader.Read())
       {
          array[i] = reader.GetString(reader.GetOrdinal("tutionfee")); 
          i++;
       }
    }
}

如果您在编译时不知道阵列大小,可以使用ExecuteScalarSelect Count(*)...命令先计算行数,也可以改用List<string>

答案 1 :(得分:0)

这是我在assoc数组中找到的解决方案:

List<string> tutionfees = new List<string>();
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
using (SqlCommand comm = new SqlCommand("select * from fees where admno = @admno", conn))
{
    comm.Parameters.AddWithValue("@admno", "value"); //set your value
    using (SqlDataReader rdr = comm.ExecuteReader())
    {
        while (rdr.Read())
        {
            tutionfees.Add(rdr["tutionfee"].ToString());
        }
    }
}

编辑1:更省钱的解决方案。
编辑2 :添加了设置参数值的注意事项。

答案 2 :(得分:0)

您可以使用SqlDataReader并循环遍历所有行以构建您需要的内容。

我更喜欢Linq,下面的代码会使用您的所有表格数据返回List(如果需要修改为Array)。

using (var con = new SqlConnection(cnString))
{   
    using (var cmd = new SqlCommand("select * from fees where admno = @admno", con))
    {
        cmd.Parameters.Add("@admno", SqlDbType.Varchar, "");
        using (var reader = cmd.ExecuteReader())
        {           
            return reader.Select(r => new 
                          {
                              TutionFee= r["tutionfee"] is DBNull ? null : r["tutionfee"].ToString(),
                              ComputerFee= r["computerfee"] is DBNull ? null : r["computerfee"].ToString(),
                              AdmissionFee= r["admissiofee"] is DBNull ? null : r["admissiofee"].ToString()
                          }).ToList();

        }
    }
}

所有属性均为string类型,但如果您知道该列的Type,则可以使用它们。

答案 3 :(得分:0)

SELECT CONVERT(varchar(6), tutionfee) + ',' AS 'data()' 
FROM fees
FOR XML PATH('')

OR

declare @ID varchar(max)='' 
select @ID=@ID + Convert(varchar(6),ID) +',' from  INDEXES
select @ID

使用此查询其他没问题。所以现在你可以使用execute scalar命令,返回值将是逗号分隔列表,并使用result.split(',');轻松转换为数组

答案 4 :(得分:-1)

        SqlConnection con = new  SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlCommand check = new SqlCommand("select * from fees where admno = @admno", con);          

           SqlDataReader rdr = null;

            rdr = check.ExecuteReader();

         ArrayList  array= new ArrayList();

            while(rdr.Read())
            {
                array.Add(rdr["tutionfee"].ToString())

            }