簡體   English   中英

SQL 更新查詢不更新表數據

[英]SQL update query not updating table data

這是我的代碼,它顯示成功,但沒有更新表中的行。

cm = new SqlCommand("update table_products set pname = @pname, pdesc = @pdesc, bid = @bid, cid = @cid, cost = @cost, price = @price, reorder = @reorder where pcode like @pcode", con);

cm.Parameters.AddWithValue("@pcode", tft_pcode.Text);
cm.Parameters.AddWithValue("@barcode", tft_barcode.Text);
cm.Parameters.AddWithValue("@pname", tft_pname.Text);
cm.Parameters.AddWithValue("@pdesc", tft_pdescription.Text);
cm.Parameters.AddWithValue("@bid", bid);
cm.Parameters.AddWithValue("@cid", cid);
cm.Parameters.AddWithValue("@cost", Double.Parse(tft_cost.Text));
cm.Parameters.AddWithValue("@price", Double.Parse(tft_price.Text));
cm.Parameters.AddWithValue("@reorder", int.Parse(tft_reorder.Text));

cm.ExecuteNonQuery();
con.Close();

MessageBox.Show("Product updated successfully");

cm.ExecuteNonQuery(); 返回受影響的行數。 在您的情況下,它可能為 0(但仍然值得獲得價值並檢查)。

在您的情況下,聽起來像查詢末尾的where pcode like @pcode表中的任何內容都不匹配。

var rowsUpdated = cm.ExecuteNonQuery();
con.Close();

if(rowsUpdate>0) MessageBox.Show("Product updated successfully");
else MessageBox.Show("Product NOT updated successfully");

如果您使用的是基於文件的數據庫,例如 sql 服務器 mdf 文件,該文件在您運行項目時動態附加到您的數據庫服務器,您應該知道您的程序正在更新的數據庫不一定是您正在尋找的同一個文件在你的管理工作室。 查看您的連接字符串 - 如果它提到 DataDirectory,那么很可能是正在更新的 bin/Debug 或 bin/Release(取決於您的活動構建配置)文件夾中的數據庫文件,而不是項目文件夾中的那個。 項目文件夾中的 db 被復制到 bin/* 您運行項目的每個 tine 中。 這通常是“我的程序說它更新了我的數據庫但它沒有”的一個很棒的原因 - 每次運行程序時數據庫都被替換為干凈的數據庫,或者開發人員正在查看一個數據庫文件並且程序正在更新另一個

我解決了這個問題問題是我試圖將 pcode(application) 與 pcode(database) 匹配,但沒有這樣做。 那是因為當我的更新表單加載時,我的事件中有 pcode generate 方法,所以我匹配舊的 pcode 值,它實際上正在做的是,它與新生成的 pcode 匹配。 所以我從 form_load 事件中刪除了 pcode generate 方法,問題就解決了。 謝謝大家的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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