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