【发布时间】:2013-05-03 13:21:56
【问题描述】:
我有一个存储发票信息的数据库。每张发票最多可以有 5 个工作关系,每个工作都有一个唯一的 ID 号。
我执行了一个 select 语句,选择了与单个发票相关的所有作业。
我尝试了很多方法来读取选定的作业 ID 并将它们存储在 jobArray 中。我希望它使用 for 循环进行选择,但我尝试过的大多数方法都使用 textBoxes(我用我的数组替换)
这是我最近的代码;
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() : "";
}
你能帮我解决这个问题吗?
【问题讨论】:
-
在执行阅读器之前打开连接
-
你为什么不能这样做
for (i = 0; i < 5; i++) { jobArray[i] = (reader.Read()) ? reader["ID"].ToString() : ""; }? -
您还可以考虑使用循环将作业分配给发票,这样如果某天发票的作业数量增加,您就不必过多地更改代码。
-
你没有提到这个问题。你试过for循环......所以......?发生了什么?出了什么问题?
-
@noobob 是的,我已经打开了连接,但没有看到有必要发布它。
标签: c# sql arrays select sql-server-ce