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

标签 c# sql arrays select sql-server-ce

我有一个存储发票信息的数据库。每个发票最多可以有 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/

相关文章:

javascript - 将 javascript 数组传递到另一个页面

c# - 富文本框 - 粗体

c# - 服务器的图像文件路径不是 C : drive MVC5

PHP SQL : GROUP BY as array index

sql - 需要有关 Northwind 数据访问层教程的更正 SQL 语法的帮助

mysql 表格中的矩阵 View

python - 使用 interp1d 时,数组末尾的 NaN 会逐渐出现

c# - Visual Studio 2017 不支持面向 .NET Core 3.0

c# - 在 DataGridView 单元格中显示占位符文本

javascript 调用具有相同上下文的函数数组