2013-11-27 18 views
0

嘿傢伙代碼波紋管運作良好,我只是想完善它。 它目前的工作方式是,它會顯示一個標籤不同的股票(數量)的動物取決於所選國家,這工作正常。乘以一個數字(雙)由一個查詢所選擇的條件使用C#和查詢的

問題

現在我不能去上班完美的是它打印的價格,雖然劑量打印價格的第二個標籤。

我想改變查詢,以便如果選擇法國或德國的國家(從​​國家選擇下拉列表),這將multiply the original number by 1.20.

例如:

如果我選擇英國,然後狗打印出來會給我價格20,我試圖得到它,所以當我選擇法國它會給我23.98。 我相信這是一個簡單的添加一個簡短的行到我的查詢,但我不能解決它。 我希望提供任何幫助。

當前代碼

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string selection = DdPetPist.SelectedValue; 
     string petPrice = string.Empty; 
     string available = string.Empty; 
     { 
      MySqlCommand cd_price = new MySqlCommand(String.Format("SELECT Price FROM Animals WHERE (Specie) ='{1}' and (Country) ='{0}'", ddlcountry.SelectedItem.ToString().Trim(), selection), cs); 
      MySqlCommand cd_available = new MySqlCommand(String.Format("SELECT Stock FROM Animals WHERE (Specie) ='{1}' and (Country) ='{0}'", ddlcountry.SelectedItem.ToString().Trim(), selection), cs); 

      cs.Open(); 
      petPrice = Convert.ToString(cd_price.ExecuteScalar()); 
      available = Convert.ToString(cd_available.ExecuteScalar()); 
      cs.Close(); 
     } 
     PetPrice.Text = String.Format("Minimum Donation For A {0} Is £{1}.", selection, petPrice); 
     Availble.Text = String.Format("{0}'s Avalible {1} In Your Country.", selection, available); 
    } 
+0

,因爲查詢將改變這取決於該國選擇了迴歸。即時通訊不知道我是否可以單獨使用返回類型? – Beep

+2

由於您試圖完善您的代碼,因此請考慮使用'參數'作爲硬幣和國家。在這種特殊情況下,你的代碼可能是安全的(假設你完全控制'ddlCountry'和'selection_price'的內容),但在所有情況下使用'Parameters'將會減少這個和將來代碼的漏洞。 – venerik

+0

好點,謝謝我會防止注射。 – Beep

回答

1

快速和骯髒的解決方案,這意味着在不考慮採取所有先前的評論,將一個表添加到包含每個國家的價格因素,你的數據庫。例如:

CREATE TABLE PriceFactors (
     Country VARCHAR(100), 
     Factor DECIMAL(2,2) 
     ); 

用所有必要的國家和每個國家的因素填寫此表。

然後,在你的代碼,你可以更改select語句:

SELECT Price * Factor 
FROM Animals 
,  PriceFactors 
WHERE Animals.Country = PriceFactors.Country 
AND Animals.Country = {0} 
AND Animals.Specie = {1} 
+0

brilliants,很好的解決方案。 – Beep

0

對於瑣碎的情況下,我認爲DECODE應該做的伎倆