首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数据库存储中选择5行,每个行在一个数组中?

从数据库存储中选择5行,每个行在一个数组中?
EN

Stack Overflow用户
提问于 2013-05-03 21:21:56
回答 1查看 1.8K关注 0票数 1

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

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

我尝试了许多方法来读取选定的作业id并将它们存储在jobArray中。我更喜欢让它使用for循环进行选择,但我尝试的大多数方法都使用textBoxes (我用我的数组替换了它)

这是我最新的代码;

代码语言:javascript
复制
     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() : "";   
        }

你能帮我弄一下这个吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-03 21:29:31

为什么要使用数组?您可以使用List(Of Int)使用普通循环来存储ID号。

考虑到列表的性质,你不需要事先知道任务的数量来设置你的数组大小,所以你可以有一个只有4个任务的发票,或者一个有6个任务的发票,但是你的代码逻辑不需要检查这一点。

代码语言:javascript
复制
    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

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

代码语言:javascript
复制
   TextBox1.Text = jobs[0].ToString();

或者使用以下命令将列表转换回数组

代码语言:javascript
复制
   int[] ids = jobs.ToArray();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16359950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档