2012-10-29 203 views
1
String nam = name.Text; 
SqlConnection cn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\test.mdf;Integrated Security=True;User Instance=True"); 
SqlCommand cmd = new SqlCommand("INSERT INTO tab(tname)VALUES(@val)", cn); 
cmd.Parameters.AddWithValue("@val", nam); 
cn.Open(); 
int cnt = cmd.ExecuteNonQuery(); 
MessageBox.Show("Message:" + cnt); 
cn.Close(); 

這是我的代碼。該消息顯示Message:1。但該值未插入數據庫測試中。表名是帶有列名tname的選項卡。數據庫中未插入數據

什麼可能會出錯?

+0

你缺少','最後的連接串。我不確定。 –

+0

返回1表示代碼實際插入到數據庫中,也許你似乎需要刷新管理工作室才能看到實際結果 –

回答

0

這整個用戶實例和AttachDbFileName =方法有缺陷 - 充其量! Visual Studio將複製.mdf文件(到Visual Studio運行你的應用程序的輸出目錄)和最有可能,你的INSERT工作得很好 - 但你只是看着錯誤的.mdf文件結束!

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

在我看來真正的解決方案

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

  2. 安裝SQL Server Management Studio中快速

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

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

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

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