c.s = "UPDATE produit SET codeBare = '" tbCodeBare.Text "',ref = '" tbRef.Text "',designation = '" tbDesignation.Text "',qte = " float.Parse(tbQte.Text.Replace(',', '.')) ", minQte = " float.Parse(tbMinQte.Text.Replace(',', '.')) ", puDevis = " float.Parse(tbPUDevis.Text.Replace(',', '.')) ", puAchat = " float.Parse(tbPUAchat.Text.Replace(',', '.')) " , typeQty = '" cbTypeQte.Text "', puVente = " float.Parse(tbPUVente.Text.Replace(',','.')) " ,totalEmbalage = '" tbTotalEmb.Text "' WHERE produit.produitID = " int.Parse(lblIdProduit.Text.ToString()) "; ";
System.FormatException : '輸入字串的格式不正確。'
當我在沒有float列的情況下更新表時,它可以作業,但有float列則不行。
uj5u.com熱心網友回復:
c.s = "UPDATE produit SET codeBare = @Codebare, ref = @Ref , qty = @Qty , typeQty = @Typeqty,designation = @Designation,minQty = @Minqty ,puDevis = @Pudevis,puAchat = @Puachat,puVente = @Puvente, totalEmbalage = @totalEmbalage WHERE produit.produitID = @Produitid; ";
c.cn.Open();
SqlCommand cmd = new SqlCommand(c.s, c.cn);
cmd.Parameters.AddWithValue("@Codebare", tbCodeBare.Text);
cmd.Parameters.AddWithValue("@Ref", tbRef.Text);
cmd.Parameters.AddWithValue("@Qty", float.Parse(tbQte.Text));
cmd.Parameters.AddWithValue("@Designation", tbDesignation.Text);
cmd.Parameters.AddWithValue("@Minqty", float.Parse(tbMinQte.Text));
cmd.Parameters.AddWithValue("@Typeqty", cbTypeQte.Text);
cmd.Parameters.AddWithValue("@Pudevis", float.Parse(tbPUDevis.Text)));
cmd.Parameters.AddWithValue("@Puachat", float.Parse(tbPUAchat.Text));
cmd.Parameters.AddWithValue("@Puvente", float.Parse(tbPUVente.Text));
cmd.Parameters.AddWithValue("@totalEmbalage", tbTotalEmb.Text);
cmd.Parameters.AddWithValue("@Produitid", int.Parse(lblIdProduit.Text));
uj5u.com熱心網友回復:
首先,正如 Franz Gleichmann 在評論中所說,請使用引數化查詢來避免 SQL 注入攻擊。
否則來回答你的問題:
- 為了可讀性,通常對大行使用換行符。
- 請將
float.Parse()和int.Parse()分開以對區域變數進行單獨分配。
例外很可能是由以下原因引起的float.Parse(),如果您進行單獨的分配,您將確切地看到哪個文本框輸入無效。
第一的:
c.s = "UPDATE produit SET codeBare = '" tbCodeBare.Text
"',ref = '" tbRef.Text
"',designation = '" tbDesignation.Text
"',qte = " float.Parse(tbQte.Text.Replace(',', '.'))
", minQte = " float.Parse(tbMinQte.Text.Replace(',', '.'))
", puDevis = " float.Parse(tbPUDevis.Text.Replace(',', '.'))
", puAchat = " float.Parse(tbPUAchat.Text.Replace(',', '.'))
" , typeQty = '" cbTypeQte.Text
"', puVente = " "" float.Parse(tbPUVente.Text.Replace(',', '.'))
" ,totalEmbalage = '" tbTotalEmb.Text
"' WHERE produit.produitID = " int.Parse(lblIdProduit.Text.ToString()) "; ";
然后結束:
NumberStyles style = NumberStyles.AllowDecimalPoint;
CultureInfo culture = CultureInfo.CreateSpecificCulture("fr-FR");
bool parseSuccess = float.TryParse(tbDesignation.Text, style, culture, out float theDesignation);
parseSuccess = parseSuccess && float.TryParse(tbQte.Text.Replace, style, culture, out float theQte);
parseSuccess = parseSuccess && float.TryParse(tbMinQte.Text, style, culture, out float theMinQte);
parseSuccess = parseSuccess && float.TryParse(tbPUDevis.Text, style, culture, out float thePUDevis);
parseSuccess = parseSuccess && float.TryParse(tbPUAchat.Text, style, culture, out float thePUAchat);
parseSuccess = parseSuccess && float.TryParse(tbPUVente.Text, style, culture, out float thePUVente);
parseSuccess = parseSuccess && int.TryParse(lblIdProduit.Text.ToString(), out int theIdProduit);
if (!parseSuccess)
{
MessageBox.Show("Wrong input");
return;
}
c.s = "UPDATE produit SET codeBare = '" tbCodeBare.Text
"',ref = '" tbRef.Text
"',designation = '" theDesignation
"',qte = " theQte
", minQte = " theMinQte
", puDevis = " thePUDevis
", puAchat = " thePUAchat
" , typeQty = '" cbTypeQte.Text
"', puVente = " "" thePUVente
" ,totalEmbalage = '" tbTotalEmb.Text
"' WHERE produit.produitID = " lblIdProduit "; ";
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/383727.html
標籤:C# sql sql-server 视觉工作室
