Normalerweise werden Sie jeweils ein Update innerhalb einer Schleife durchführen. Wenn Sie 100 Datensätze haben, werden Sie 100 Fahrten zum Server haben, was nicht wünschenswert ist. Wie kann ich eine Gruppe von Datensätzen mit einem einzigen Umlauf in die Datenbank aktualisieren?Was ist der einfachste Weg, um eine Charge von Datensätzen mit nur einer Reise zu aktualisieren?
using System.Data.SqlClient;
for (int ii = 0; ii < ptList.Length; ii++) {
sql = @"update [CCVT].[dbo].[_tb_NCVT_Points] set PointDateTime = CONVERT(datetime, '"
+ ptList[ii]._dateDt.ToString("yyyy-MM-dd HH:mm:ss.FFF") + "', 121), PointStatus = '"
+ ptList[ii]._statStr + "', PointValue =" + ptList[ii]._valDoub.ToString()
+ " WHERE Pointkey = '" + ptList[ii]._pointName + "'; ";
theActiveConnection.Open();
SqlCommand cmd = new SqlCommand(sql, theActiveConnection);
try {
cmd.ExecuteNonQuery();
cmd.Dispose();
}
catch (Exception eX) {
//handle exceptions
}
}
Bitte stimmen Sie diese Frage nicht ab.
Die Frage How can I update multiple rows in a table with SQL query? fragte nicht nach einer Reise, und ihre Antwort ergab keine einzige Reise !! Haben Sie gesehen, dass die ExecuteNonQuery-Aktion innerhalb der Schleife ist? Das ist nicht meine Frage und das ist nicht meine Antwort!
foreach (DataGridViewRow row in dataGridView2.Rows)
{
cm.Parameters["@Qty"].Value = row.Cells[2].Value;
cm.Parameters["@Description"].Value = row.Cells[3].Value;
cm.Parameters["@Price"].Value = row.Cells[4].Value;
cm.ExecuteNonQuery();
}
cn.Close();
Dann erstellen Sie einfach eine Batch-SQL-Anweisung und führen Sie es in einem Rutsch aus. Oder erstellen Sie eine gespeicherte Prozedur und füttern Sie DataTable mit Ihren Daten. – eocron
Mögliches Duplikat von [Wie kann ich mehrere Zeilen in einer Tabelle mit SQL-Abfrage aktualisieren?] (Http://stackoverflow.com/questions/34341716/how-can-i-update-multiple-rows-in-a-table- with-sql-query) – eocron
Sie können versuchen, das schnellste Verfahren der Welt zu haben, aber wenn Sie das Sicherheitsloch namens Sql Injection nicht beheben, haben Sie ein größeres Problem – Steve