[英]Populating array from a database C#
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnnFinalProject"].ToString());
SqlCommand cmd = new SqlCommand(@"SELECT c.partID, p.name, p.categoryID, p.price, p.image, p.subCategoryID,
(CASE WHEN categoryID = 1 THEN 'Y' ELSE 'N' END) AS casesYN,
(CASE WHEN categoryID = 3 THEN 'Y' ELSE 'N' END) AS OSYN,
(CASE WHEN categoryID = 7 THEN 'Y' ELSE 'N' END) AS HDDYN,
(CASE WHEN subCategoryID = 1 THEN 'Y' ELSE 'N' END) AS powerYN,
(CASE WHEN subCategoryID = 2 THEN 'Y' ELSE 'N' END) AS processorYN,
(CASE WHEN subCategoryID = 3 THEN 'Y' ELSE 'N' END) AS moboYN,
(CASE WHEN subCategoryID = 4 THEN 'Y' ELSE 'N' END) AS memoryYN,
(CASE WHEN subCategoryID = 5 THEN 'Y' ELSE 'N' END) AS graphicsYN,
(CASE WHEN subCategoryID = 6 THEN 'Y' ELSE 'N' END) AS opticalYN,
(CASE WHEN subCategoryID = 7 THEN 'Y' ELSE 'N' END) AS soundYN
FROM configuration c JOIN parts p ON p.partID = c.partID
WHERE c.customID = @ID", conn);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string[] cases = { dr["partID"].ToString() };
}
如何僅將“casesYN”值設置為 Y 的“partID”插入到案例數組中,因為現在它會在 sql 查詢中插入每個“partID”。
我假設您不想更改 SQL 查詢。
使用List<string>
(需要using System.Collections.Generic
)而不是string[]
因為向其中添加新項目會更容易:
var cases = new List<string>();
while (dr.Read())
{
if(dr["casesYN"].ToString() == "Y")
cases.Add(dr["partID"].ToString());
}
如果你真的需要一個數組,你總是可以在循環結束后調用ToArray()
方法:
string[] casesArray = cases.ToArray();
但它需要在文件頂部using System.Linq
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.