用数据库中的数字填充数组
本文关键字:填充 数组 数字 数据库 | 更新日期: 2023-09-27 18:26:07
我正试图找出用从数据库中提取的数值填充数组的最佳方法。这是我迄今为止设置的功能:
protected int[] GetBoxes()
{
int[] boxes;
string query = "SELECT DISTINCT Length FROM Products INNER JOIN Baird_Ground_Boxes_Products ON uidBox = ProductId";
using (SqlConnection cn = new SqlConnection(AbleConnectionStr))
{
SqlCommand cmd = new SqlCommand(query, cn);
cmd.CommandType = CommandType.Text;
cn.Open();
using (IDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
if (reader["Length"].ToString() !="")
{
//populate array with the length values returned
}
}
}
}
return boxes;
}
从来没有一组值可以返回(可以是3,也可以是2)。我对如何填充数组感到困惑,好像我让它变得太难了。任何建议都会很有帮助!
乍一看,您可能会从查询中返回多行。
select distinct Length
from Products
join Baird_Ground_Boxes_Products
on uidBox = ProductId
因此,您可以使用while loop
读取所有返回的行。
var lengths = new List<string>();
if (reader.HasRows)
while (reader.Read()) lengths.Add(reader.GetString(0));
return lengths.ToArray();
我想知道你的域Length
是否真的是一个字符串。也许应该考虑使用整数,因为长度通常用数字表示。如果是这样的话,那么就用GetString
的方法来支持GetInt32
,并更改您的列表类型。
var length = new List<int>();
lengths.Add(reader.GetInt32(0));
您应该填充一个List<T>
,最后使用它的ToArray
方法来创建数组:
var lengths = new List<int>();
// ...
using (var reader = cmd.ExecuteReader())
while (reader.Read())
{
if(!reader.IsDBNull(0))
lengths.Add(reader.GetInt32(0));
}
return lengths.ToArray();
我还使用了reader.IsDBNull
而不是reader["Length"].ToString() !=""
来跳过null
s。您应该首先考虑使用WHERE Length IS NOT NULL
来删除null
s。