Wie abziehen Menge ab Lager C# sql

Sobald das Produkt gekauft wird, sollte es reduzieren von Quantität auf Lager

double qun;

qun = Convert.ToDouble(dataGridView1.Rows[0].Cells[3].Value) - Convert.ToDouble(textBox2.Text);

sqlconnection = new SqlCeConnection(ConnectionString);
sqlcommand = new SqlCeCommand();
sqlconnection.Open();
sqlcommand.Connection = sqlconnection;
sqlcommand.CommandText = (@"UPDATE ItemStock_Info SET Quantity [email protected] WHERE [Item_Number]='"+ textBox1.Text +"'");
sqlcommand.Parameters.Add("@qun", qun);

sqlcommand.ExecuteNonQuery();
sqlconnection.Close();
  • SQL-Injection-Alarm Sie sollten nicht verketten Sie zusammen Ihre SQL-Anweisungen – verwenden Sie parametrisierten Abfragen statt zur Vermeidung von SQL-injection



One Reply
  1. 1

    Wenn die variable qun ist die Menge verkauft, dann sollten Sie sich subtrahieren Sie von dem Wert in der Datenbank die Tabelle nicht einfach zuweisen, den Wert wieder zu überschreiben Ihr Lager Wert

       @"UPDATE ItemStock_Info 
         SET Quantity = Quantity - @qun 
         WHERE ...  "

    Einen Hinweis auf Sie. Warum verwenden Sie einen parameter für die Menge und nicht für die where-Bedingung? Dies sollte unter allen Umständen vermieden werden und Parameter Hinzugefügt werden soll, in einer anderen Art und Weise

    sqlcommand.CommandText = (@"UPDATE ItemStock_Info 
                              SET Quantity = Quantity - @qun 
                              WHERE [Item_Number][email protected]";
    sqlcommand.Parameters.Add("@qun", SqlDbType.Float).Value = qun;
    sqlCommand.Parameters.Add("@num", SqlDbType.NVarChar).Value = textBox1.Text;
    sqlcommand.ExecuteNonQuery();

    Ich sollte hinzufügen, eine Warnung hier. Ich denke, dass Sie nicht wollen, um zu subtrahieren Sie die Menge verkauft werden, wenn diese änderung Ihrer Menge-Wert auf ein Niveau unter null. Wird diese in eine SQL Server CE-Datenbank, ist es wahrscheinlich sicher davon ausgehen, dass keiner sich ändern könnte, das Quantity Wert, der hinter Ihren Rücken und Sie bereits getestet haben diese Bedingung, bevor Sie die entfernen-operation, aber in einer Mehrbenutzerumgebung ich schlage vor, Sie verwenden eine Datenbank, die eine bessere Unterstützung für Parallelität auf diese Felder.

    • danke, es hat geklappt 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.