我有一个表,我试图捕获具有匹配标识符的多行中一列中的所有值。例如,我的查询类似于:
SELECT
prevHours
FROM
submissions
WHERE
projectCat='Capacity'
然后我尝试将prevHours中的所有值传递到一个我可以执行操作的数组中。
答案 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;
}
}
}`