解決C#運行程序修改數(shù)據(jù)后數(shù)據(jù)表不做更新的問題
前言
近日,在使用C#連接數(shù)據(jù)庫的時候,對數(shù)據(jù)庫中的表做更新后,在當前啟動項目中去顯示表數(shù)據(jù)時雖然會發(fā)生一個更新,但是在結束程序運行后再去觀察數(shù)據(jù)表中的記錄時發(fā)現(xiàn)并沒有發(fā)生一個變化,在重復嘗試了好幾次后還是同樣的結果,于是就開始了我的查錯之旅~
現(xiàn)象觀察
現(xiàn)在的場景是對一個學生信息去做一個增刪查改
- 下面是原數(shù)據(jù)表Student中的記錄
- 然后我點擊【增加】按鈕后會彈出框讓用戶輸入需要添加的學生信息
- 當操作后再去點擊【顯示表數(shù)據(jù)】后,就可以發(fā)現(xiàn)當前數(shù)據(jù)表中已經多出了一條記錄
- 然后我在結束程序后去查看Student數(shù)據(jù)表的時候發(fā)現(xiàn)并數(shù)據(jù)表中的記錄并沒有做一個同步的更新,再想可能要手動刷新一下才行,于是點擊了左上角的【刷新】后發(fā)現(xiàn)依舊是這幅模樣,還是和之前一樣的9條記錄,這是為什么呢???我便感覺到很疑惑
想到可能是出了BUG吧,于是又開啟程序進行操作~
- 但是當我先點擊【顯示表數(shù)據(jù)】想要查看一下數(shù)據(jù)表中的信息時,卻發(fā)現(xiàn)程序運行起來是做了更新的,但是數(shù)據(jù)表中卻沒有做更新,導致了兩邊不同步的情況,這就讓我百思不得其解
問題思考
于是我就開始思考??既然兩邊的數(shù)據(jù)都不一致的話,那么這會不會就是就是兩張數(shù)據(jù)表呢??
- 經過我不斷地搜尋資料、詢問老師和同學、查看各種博客下,終于驗證了我的猜測!?。?/li>
這真的是兩張不同的數(shù)據(jù)表,當我們去運行程序的時候,默認是在DeBug環(huán)境底下去進行的,所以我們連接到的是 bin\Debug
下的數(shù)據(jù)庫文件,而不是項目根目錄下的數(shù)據(jù)庫文件
也就是說我們在運行程序的時候,其實一直在更改 bin\Debug
文件下的數(shù)據(jù)庫文件,所以在下一次運行起來后所查詢的也是這個數(shù)據(jù)庫,而根目錄下的 Database.mdf
數(shù)據(jù)庫文件卻一直沒有被動過,所以沒更新是正常的
解決問題
接下去我們就來解決一下這個問題
- 步驟很簡單,只需要設置一下當前你工程下的
.mdf
結尾的數(shù)據(jù)庫文件屬性即可
- 對于復制到輸出目錄這個屬性的默認值為【始終復制】,我們將其改為【不復制】即可
- 還有一點,有的同學可能會遇到下面這樣的情況,如果你設置的屬性值為【如果較新則復制】,此時在運行程序后就會出現(xiàn)如下的情況,出現(xiàn)
正由另一進程使用,因此該進程無法訪問此文件
,然后項目被不斷地重啟,不過最多不會超過10次 - 這就是因為你正在運行
bin\DeBug
目錄下的【.mdf】數(shù)據(jù)庫文件,此時發(fā)現(xiàn)兩邊的數(shù)據(jù)庫信息不一致,編譯器就會選擇去做一個更新,那么機會和根目錄下的【.mdf】文件沖突了,兩個進程所使用的端口號是一直的, 這類似于我們在啟動Tomcat服務器出現(xiàn)端口號占用的情況
- 還有一點就是你一定要保證你的數(shù)據(jù)庫連接字符串所尋找的數(shù)據(jù)庫文件
[Database1.mdf]
是正確的
// 創(chuàng)建一個數(shù)據(jù)庫連接字符串 string connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=D:\\code\\c-sharp\\實驗\\實驗4\\學生成績增刪查改\\學生成績增刪查改\\Database1.mdf;Integrated Security=True";
- 接下去我們再運行程序進行數(shù)據(jù)表的修改時就發(fā)現(xiàn)數(shù)據(jù)庫中的學生表發(fā)生了同步的更新
好,到這里本文就結束了,希望能幫助到遇到困難的你
以上就是解決C#運行程序修改數(shù)據(jù)后數(shù)據(jù)表不做更新的問題的詳細內容,更多關于C#數(shù)據(jù)表不做更新的資料請關注腳本之家其它相關文章!
相關文章
C#采用HttpWebRequest實現(xiàn)保持會話上傳文件到HTTP的方法
這篇文章主要介紹了C#采用HttpWebRequest實現(xiàn)保持會話上傳文件到HTTP的方法,很實用的功能,需要的朋友可以參考下2014-08-08Unity報錯InvalidOperationException: out of sync的解決
今天在做個東西,發(fā)現(xiàn)報錯,特此來記錄一下,本文介紹了Unity報錯InvalidOperationException: out of sync的解決,感興趣的可以了解一下2021-05-05C# winform程序實現(xiàn)開機自啟動并且識別是開機啟動還是雙擊啟動
這篇文章主要介紹了C# winform程序實現(xiàn)開機自啟動并且識別是開機啟動還是雙擊啟動的實現(xiàn)代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-10-10