簡體   English   中英

如何使用SQL Server CE和C#更新dB表中的單元格值(Visual Studio 2010)

[英]How can I update a cell value in a dB table, using SQL Server CE and C# (Visual Studio 2010)

我正在為大學寫一個小應用程序,一個視頻租賃應用程序。 我從數據庫中讀取沒有問題,但我無法更新表中的數據。

特別是我想在有人租一部電影后更新顯示有關電影數量的單元格。

到目前為止,我一直在嘗試這個:

string updateDVDs = "UPDATE Products SET dvd_quantity = " + product.Quantity + " WHERE title = '"+ product.Name +"';";
cmdUpdateDVDs = new SqlCeCommand(updateDVDs, dBConnection);
dBConnection.Open();
cmdUpdateDVDs.ExecuteNonQuery();
dBConnection.Close();

我沒有收到任何錯誤,但表格中的單元格沒有更新。 如有任何幫助將不勝感激,如果您需要更多信息,請告訴我。

更新:好的,我有一些有趣的發展,我已經更新了代碼:

string updateDVDs = "UPDATE Products SET dvd_quantity = " + product.Quantity + " WHERE title = '" + product.Name + "'";
dBConnection = new SqlCeConnection(connectionString);
cmdUpdateDVDs = new SqlCeCommand(updateDVDs, dBConnection);
cmdUpdateDVDs.Connection.Open();
int rows = cmdUpdateDVDs.ExecuteNonQuery();
dBConnection.Close();

從我在MSDN上看到的兩種方法都是有效的,但第二種方法似乎有效。 現在奇怪的是,我租了電影'死硬',這一切都順其自然,我得到了這些結果:

數據庫已更新

一切都很好,從這一點開始就沒有辦法了,所以我退出了應用程序並重新開始。 我第二次去'Die Hard'租房來確認,並且,成功!! DVD數量的新讀數為0,如預期: DVD數量已成功更新!

但是,當我在Visual Studio中打開Product表時,原始值仍然存在: 在Visual Studio中,表尚未更新

不僅如此,當我在Visual Studio中打開表格后再次運行應用程序時,DVD數量將重置為原始值,更新后的值將消失。

我錯過了一些簡單的東西嗎? 我試過刷新表,它沒有任何區別。 只要我不在Visual Studio中打開表,應用程序就會按預期運行,無論我運行多少次,值都會按預期更新,直到我打開表本身。

你必須告訴我們你正在使用什么連接字符串,說“我更新連接指向bin文件夾中的數據庫”這樣的東西沒有用。 您使用的連接字符串如c:\\Users\\Me\\Visual Studio 2010\\Projects\\MyProject\\bin\\debug\\HKRMoviesDB.sdf 這是不對的,它是硬編碼到您機器上的VS2010調試測試文件夾,並且對其他任何人都不起作用,只有在您從調試器運行時才能工作,並且在您部署應用程序時無法工作。

ADO.NET在連接字符串中查找垂直條,並使用AppDomain屬性擴展包含的字符串。 例如,如果從VS調試器使用Data Source=|DataDirectory|\\HKRMoviesDB.sdfDataDirectory將擴展到項目的bin文件夾,其中VS復制調試DLL。 如果使用MSI安裝程序部署應用程序, DataDirectory將擴展到用戶選擇的應用程序安裝文件夾。 這個答案進一步解釋。

請注意, DataDirectory可能不是用戶可寫的目錄; 它是一個用於只讀數據的好目錄,但是如果您希望用戶寫入該文件,則應將其復制到Environment.SpecialFolder.ApplicationData或應用程序中的某個位置,如本答案中所述

還有一件事需要記住。 在進行調試時,您通常希望將原始源數據復制到調試文件夾,對其進行測試,然后丟棄測試數據,因為您通常不希望測試數據包含在最終部署中。 這就是項目中“復制到輸出目錄”屬性的功能。 如果它設置為“如果更新則復制”,它可能應該是,那么您對測試數據所做的任何更改都是臨時的; 下次更新項目中的原始源數據時,將丟棄測試數據。 請記住,您的應用程序的部署目錄通常不能由用戶寫入,因此您不應該在DataDirectory編寫用戶數據。

一位同學向我指出:

“根據我的理解,您的代碼更新的數據庫,除非您硬編碼數據庫的路徑是/ bin / debug /文件夾中的文件。您在Visual Studio中查看的文件是項目根目錄中的文件。”

我更新了連接以指向bin文件夾中的數據庫。

暫無
暫無

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

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