簡體   English   中英

從 SELECT IN 語句 C# 中獲取值

[英]Get Values from a SELECT IN Statement C#

我需要使用 SELECT 語句從列中提取多個值。

在此處輸入圖片說明

MySqlConnection con = new MySqlConnection(strConn);
    MySqlCommand com = new MySqlCommand(

    SELECT meta_value
    FROM postmeta
    WHERE postID = 16 AND metakey IN (
    'SKU', 'Price', 'Amount'), con)

    con.Open();

    MySqlDataReader r = com.ExecuteReader();

    while(r.read())
    {
        prodMeta.Add(new ProductMeta
        {
            ProductSKU = r.GetString(0),
            ProductPrice = r.GetDouble(0),
            ProductAmountSold = r.GetInt16(0)
        }
    }

我只得到每一個的最后一個“ProductAmountSold”。 我猜這與 ExecuteReader 有關系,它帶回了列。 我環顧四周,找不到任何易於遵循的說明,可以使用 1 個查詢從單個列中獲取多個值。

您 sql 查詢選擇單個列。 為了選擇幾列,您需要更新您的 sql。 IE:

SELECT meta_value, price, amountSold
FROM postmeta
WHERE postID = 16 AND metakey IN (
'SKU', 'Price', 'Amount'), con)

然后增加索引,當你得到你的價值時:

    {
        ProductSKU = r.GetString(0),
        ProductPrice = r.GetDouble(1),
        ProductAmountSold = r.GetInt16(2)
    }

這可能會有所幫助: Retrieve data using a DataReader

您還需要閱讀元鍵列以了解如何解析元值列

SELECT metakey, meta_value
FROM postmeta
WHERE postID = 16 AND metakey IN (
'SKU', 'Price', 'Amount'), con)

con.Open();

MySqlDataReader r = com.ExecuteReader();

while(r.read())
{
    prodMeta.Add(new ProductMeta
    {
        String type = r.GetString(0);
        if (type == "SKU")
        {
            ProductSKU = r.GetString(1);
        }
        else if (type == "PRICE")
        {
            ProductPrice = r.GetDouble(1);
        }
        else 
        {
             ProductAmountSold = r.GetInt16(1);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM