2013-07-10 32 views
1

我創建了一個Windows窗體應用程序,該應用程序應該將新記錄添加到數據庫中。現在,它會成功添加它,並且可以使用新數據...但是,當我關閉應用程序並重新啓動它時,應用程序的行爲就好像沒有任何變化。數據庫文件不更新

數據庫是在SQL Server中創建的,應用程序使用它生成的.mdf文件。

這裏是方法:

private void btnUnos_Click(object sender, EventArgs e) 
{ 
      //create an instance of the row to be inserted 
      PIScarinaDataSet.OsobaRow novaOsoba; 
      novaOsoba = pIScarinaDataSet.Osoba.NewOsobaRow(); 

      //fill the attributes 
      novaOsoba.Ime = txtImeOsobe.Text; 
      novaOsoba.Drzavnost = dobijDrzavu(); 
      novaOsoba.Predstavlja = dobijPredstavnika(); 

      //insert into the database 
      this.Validate(); 
      this.pIScarinaDataSet.Osoba.Rows.Add(novaOsoba); 
      this.osobaTableAdapter1.Update(this.pIScarinaDataSet.Osoba); 
      this.osobaBindingSource1.EndEdit(); 
} 
+4

.Save()?......... –

+0

where.osobaBindingSource1.BeginEdit()? – Edper

+0

另一個需要注意的是,由於您使用的是由SQL Server創建的.MDF,因此您需要確保Visual Studio中的文件的「Copy to Output Directory」屬性設置爲「Copy if newer」。 (或者,如果要手動將其置於正確的目錄中,請不要複製)。也就是說,如果實際上保存了數據,這就是問題所在。 –

回答

1

你沒有表現出我們的關鍵部分 - 連接字符串應用程序的 - 但我猜測,這將包含類似AttachDbFileName=yourdatabase.mdf某處有。

整個用戶實例和AttachDbFileName =方法有缺陷 - 最好!在Visual Studio中運行應用程序時,它將複製.mdf文件(從您的App_Data目錄到輸出目錄 - 通常爲.\bin\debug) - 最有可能爲,您的INSERT工作得很好 - 但是您只看着錯誤.mdf文件到底!

如果你想堅持這種方法,那麼試着在myConnection.Close()調用上放一個斷點 - 然後用SQL Server Mgmt Studio Express檢查.mdf文件 - 我幾乎可以確定你的數據在那裏。

在我看來真正的解決方案

  1. 安裝SQL Server Express(和你已經做到這一點無論如何)

  2. 安裝SQL Server Management Studio中快速

  3. 創建您的數據庫SSMS Express,給它一個邏輯名稱(例如MyDatabase

  4. 使用其邏輯數據庫名稱連接到它(在服務器上創建時給出) - 並且不要亂用物理數據庫文件和用戶實例。在這種情況下,您的連接字符串將是這樣的:

    Data Source=.\\SQLEXPRESS;Database=MyDatabase;Integrated Security=True 
    

    和其他一切是正是和以前一樣......

2

由於這是幫你,我會讓它是一個答案:

因爲你正在使用由SQL Server創建的.MDF,你需要確保文件的「Copy to Output Directory」屬性設置爲「Copy if newer」在視覺螺柱IO。 (或者,如果要手動將其置於正確的目錄中,請不要複製)。也就是說,如果實際上保存了數據,這就是問題所在。