2010-06-18 48 views
-5

我有一個widnows窗體應用程序,我不能保存數據庫(文本框)中的數據(ms訪問)的數據。存儲的數據可以在應用程序中看到,但是如果我打開數據庫,它不存在...所以如果我打開數據庫並重新啓動表單應用程序,我沒有看到之前插入的數據。無法在數據庫幫助中保存數據!

 
string conString = "Provider=Microsoft.Jet.OLEDB.4.0;" 
     + " Data Source=save.mdb"; 


      OleDbConnection empConnection = new OleDbConnection(conString); 


      string insertStatement = "INSERT INTO zivila " 
           + "([naziv]) " 
           + "VALUES (@naziv)"; 

      OleDbCommand insertCommand = new OleDbCommand(insertStatement, empConnection); 

      insertCommand.Parameters.Add("@naziv", OleDbType.Char).Value = textBox1.Text; 

      try 
      { 
       empConnection.Open(); 
       int count = insertCommand.ExecuteNonQuery(); 
       empConnection.Close(); 
      } 
      catch (OleDbException ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      finally 
      { 

       textBox1.Clear(); 
+0

哇,奇怪。如果原始作者在一定時間內完成編輯,編輯不會顯示爲編輯內容? – aehiilrs 2010-06-18 17:55:16

+0

數據庫文件名中沒有路徑。這意味着數據庫位於當前目錄中。但是當你運行你的程序時,目前的目錄是什麼?在VS中的調試模式下,這是BIN \ DEBUG。更新的數據庫在那裏。 – Steve 2016-09-29 07:47:58

回答

3

我認爲你缺少一個括號]

+0

我削減了一些coude所以...編譯器不顯示任何錯誤 – Simon 2010-06-18 17:38:06

+0

@Simon編譯器不會顯示任何錯誤。這是SQL的問題。雖然你會認爲它會在執行時拋出一個異常... – 2010-06-18 17:40:31

+0

我說過我使用的數據可用嗎?所以,如果我沒有一個括號,我會在數據被保存之前得到一個錯誤。我編輯了這個問題(添加了),所以請單獨留下那個括號。這是我編輯代碼cous的錯誤,我不希望'把整個代碼放在不需要的cous上,我只想知道爲什麼不它(數據)保存到我的數據庫中如果我使用整個路徑作爲數據源,那麼數據將被存儲,但我必須重新啓動應用程序才能使其可用,並且每次移動時我都必須更改數據源的路徑應用程序... – Simon 2010-06-18 17:48:21

0

OleDb的好像不支持命名參數。

here

的OLE DB.NET Framework數據提供使用標有問號定位參數而不是命名參數(?)。

這可能會得到你想要的東西:

string insertStatement = "INSERT INTO zivila ([naziv]) VALUES (?)"; 
// snip 
insertCommand.Parameters.Add("@p1", OleDbType.Char, 255).Value = textBox1.Text; 
0

確保你正在尋找正確的數據庫:如果你的數據庫是你的解決方案的一部分,它會被複制到bin文件夾和生成文件夾中的數據庫將被更新。

我同意@tomfanning Access不支持命名參數,應該使用問號。