如何从数据库表中检索单个列的值?

时间:2015-02-25 15:57:25

标签: c# .net database

我有一个表,我试图捕获具有匹配标识符的多行中一列中的所有值。例如,我的查询类似于:

SELECT 
   prevHours 
FROM 
   submissions 
WHERE
  projectCat='Capacity'

然后我尝试将prevHours中的所有值传递到一个我可以执行操作的数组中。

2 个答案:

答案 0 :(得分:1)

使用数据库中的值列表的最简单方法是使用List<T>;代码与您现在的代码类似,请参见下文。

代码非常简单:

var container = new List<int>();
var dbConnection = "...";
var query = "SELECT [prevHours] FROM [submissions] WHERE [projCat] = @Value";
using(var connection = new SqlConnection(dbConnection))
using(var command = new SqlCommand(query, connection))
{
     connection.Open(); 
     command.Parameters.Add("@Value", SqlDbType.VarChar, max).Value = "Capacity";    
     using(var reader = command.ExecuteReader())
         while(reader.Read())
         {
              if(reader["prevHours"] != DBNull.Value)
                   container.Add(Convert.ToInt32(reader["prevHours"]));
         }
}

此外,如果您没有使用该列表进行进一步处理,您可以使用ExecuteScalar和表单的查询

SELECT SUM(prevHours) FROM submissions WHERE projCat = @Value

使用command.ExecuteScalar()

获得类似结果

答案 1 :(得分:0)

我编写了一个返回数据库表的函数:

public static DataTable ExecuteDataTable(SqlConnection conn, string cmdText,
            params SqlParameter[] parameters)
        {
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = cmdText;
                cmd.Parameters.AddRange(parameters);
                using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
                {
                    DataTable dt = new DataTable();
                    adapter.Fill(dt);
                    return dt;
                }
            }
        }`