簡體   English   中英

使用C#更新SQL表中的值

[英]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 ; 第二-不要在循環內創建commandparameters等,只需分配值並執行:

 // 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM