[英]Update value in SQL table using C#
我需要將字段QB_STATUS
從值R
更改為值C
我這樣做是在循環中,因為我無法“重新查詢”表,因為數據可能已更改。
我建立了要更新的條目列表。 該代碼沒有錯誤,並重復了5次(根據我的idInvoices列表正確),但是該字段未更新。
for (int i = 0; i < idInvoices.Count; i++)
{
// following command will update one row as ID_Invoice is primary key.
// ID_Invoice taken from list previously built in ReadDataToNAVArray
SqlCommand cmd = new SqlCommand("UPDATE tblINVOICES SET QB_STATUS=@Status WHERE ID_INVOICE = @IDInvoice", myConnection);
cmd.Parameters.Add("@Status", "C");
cmd.Parameters.Add("@IDInvoice", idInvoices[i]);
cmd.Dispose();
}
首先,您必須執行查詢: ExecuteNonQuery
; 第二-不要在循環內創建command , parameters等,只需分配值並執行:
// Make SQL readable
String sql =
@"UPDATE tblINVOICES
SET QB_STATUS = @Status
WHERE ID_INVOICE = @IDInvoice";
// wrap IDisposable into "using"
// do not recreate command in the loop - create it once
using (SqlCommand cmd = new SqlCommand(sql, myConnection)) {
cmd.Parameters.Add("@Status", SqlDbType.VarChar); //TODO: check types, please
cmd.Parameters.Add("@IDInvoice", SqlDbType.Decimal); //TODO: check types, please
// Assign parameters with their values and execute
for (int i = 0; i < idInvoices.Count; i++) {
cmd.Parameters["@Status"].Value = "C";
cmd.Parameters["@IDInvoice"].Value = idInvoices[i];
cmd.ExecuteNonQuery();
}
}
您在命令中缺少ExecuteNonQuery 。
for (int i = 0; i < idInvoices.Count; i++)
{
SqlCommand cmd = new SqlCommand("UPDATE tblINVOICES SET QB_STATUS=@Status WHERE ID_INVOICE = @IDInvoice", myConnection);
cmd.Parameters.Add("@Status", "C");
cmd.Parameters.Add("@IDInvoice", idInvoices[i]);
cmd.ExecuteNonQuery();
cmd.Dispose();
}
我認為您缺少cmd.ExecuteNonQuery();
。
使用sql命令的另一種方式的示例:
SqlConnection addConn = new SqlConnection();
addConn.ConnectionString = Properties.Settings.Default.yourDataBaseConnection;
addConn.Open();
SqlCommand addComm = new SqlCommand();
addComm.Connection = addConn;
addComm.CommandText = "sql command";
addComm.ExecuteNonQuery();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.