2013-06-18 124 views
0

我正在用C#開發windows表單應用程序與sql server數據庫。我只能在運行時插入和檢索數據。如果我再次運行它,它不會顯示以前插入的數據。數據沒有被保存在數據庫中沒有運行時錯誤

connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB.mdf;Integrated Security=True;User Instance=True" 
+4

您如何向我們展示您用於嘗試插入數據的代碼?到目前爲止,您只向我們顯示了連接字符串。 –

+0

有沒有機會看到你正在運行的SQL? – brianestey

+0

public void InsertSub(int SubCode,string SubName,DateTime date,string user) string sql1 =「插入到Inv_Sub_Stores的值(」+ SubCode +「,'」+ SubName +「','」+ date +「' ,'+ user +「')」; SqlCommand com = new SqlCommand(sql1,ConnectionManager.Connection()); com.ExecuteNonQuery(); ConnectionManager.Connection()。關(); } – Nuu

回答

5

整個用戶實例和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,給它一個邏輯名稱(例如MyDB

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

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

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

+0

問題解決了。謝謝。 – Nuu

0

我也有類似的問題。

您可以刪除.mdf和bin文件夾日誌文件,然後在app.config文件路徑更改爲類似下面這樣

的connectionString =「數據源= \ SQLEXPRESS; AttachDbFilename = C:\ Path \ yourdatabasefile.mdf;集成安全性= True;用戶實例= True「

相關問題