gpt4 book ai didi

c# - 从数据库存储中选择 5 行,每一行都在一个数组中?

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:09 25 4
gpt4 key购买 nike

我有一个存储发票信息的数据库。每个发票最多可以有 5 个工作关系,每个工作都有一个唯一的 ID 号。

我执行了一条选择语句,选择了与一张发票相关的所有工作。

我已经尝试了很多方法来读取选定的作业 ID 并将它们存储在一个 jobArray 中。我更愿意使用 for 循环来选择它,但我尝试过的大多数方法都使用文本框(我用我的数组替换了它)

这是我最近的代码;

     SqlCeCommand cmdCountJobs = new SqlCeCommand("SELECT COUNT(Job_ID)AS INVCOUNT FROM Invoice WHERE Invoice_Number = " + maxInvoice + " ", cn);
cmdCountJobs.Connection = cn;
reader = cmdCountJobs.ExecuteReader();
while (reader.Read())
{
countValue = Convert.ToInt32(reader["INVCOUNT"].ToString());
}
SqlCeCommand cmdJobSearch = new SqlCeCommand("SELECT Job_ID as ID FROM Invoice WHERE Invoice_Number = " + maxInvoice + " ", cn);
cmdJobSearch.Connection = cn;
reader = cmdJobSearch.ExecuteReader();
SqlCeDataAdapter da = new SqlCeDataAdapter(cmdJobSearch);
jobArray[0] = (reader.Read()) ? reader["ID"].ToString() : "";
jobArray[1] = (reader.Read()) ? reader["ID"].ToString() : "";
jobArray[2] = (reader.Read()) ? reader["ID"].ToString() : "";
jobArray[3] = (reader.Read()) ? reader["ID"].ToString() : "";
jobArray[4] = (reader.Read()) ? reader["ID"].ToString() : "";
}

你能帮我解决这个问题吗?

最佳答案

为什么要使用数组?您可以使用 List(Of Int) 通过正常循环存储 ID 号。
考虑到列表的性质,您不需要事先知道设置数组大小的作业数量,因此您可以有一个只有 4 个作业的发票或一个有 6 个作业的发票,但您的代码逻辑不需要检查这个。

    List<int> jobs = new List<int>();
SqlCeCommand cmdJobSearch = new SqlCeCommand("SELECT Job_ID as ID FROM Invoice " +
"WHERE Invoice_Number = @ivc", cn);
cmdJobSearch.Connection = cn;
cmdJobSearch.Parameters.AddWithValue("@ivc", maxInvoice);
reader = cmdJobSearch.ExecuteReader();
while(reader.Read())
jobs.Add(Convert.ToInt32(reader["ID"]));

另请注意,我已更改您的查询以避免字符串连接。可能情况并非如此,但使用参数化查询来避免 Sql Injection 是一个很好的做法。

当然,如果您需要在其余代码中的某处使用数组,您可以轻松地像引用数组一样引用列表

   TextBox1.Text = jobs[0].ToString();

或者将列表转换回数组

   int[] ids = jobs.ToArray();

关于c# - 从数据库存储中选择 5 行,每一行都在一个数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16359950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com