2011-09-08 55 views
0

我有一個問題,不能更改提交到SQL Server Compact Edition數據庫

private void button_Submit_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     string connectionString = @"Data Source=Database_TouchPOS.sdf;Persist Security Info=False;"; 
     using (SqlCeConnection connection = new SqlCeConnection(connectionString)) 
     { 
     using (SqlCeCommand command = connection.CreateCommand()) 
     { 
      connection.Open(); 
      command.CommandText = "INSERT INTO Product (Title,Price,Category_Id) VALUES (@title, @price,@category_Id)"; 
      command.Parameters.AddWithValue("@title", textBox_Title.Text); 
      command.Parameters.AddWithValue("@price", textBox_Price.Text); 
      command.Parameters.AddWithValue("@category_Id", comboBox_Category.SelectedIndex); 

      command.ExecuteNonQuery(); 

      MessageBox.Show("Product Added Successfully..."); 
     } 
     connection.Close(); 
     }     
    } 
    catch (SqlException ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

一切似乎是罰款,但仍無法將數據添加到數據庫中。

  1. 我曾嘗試用完整的數據庫路徑,例如c:\project\database.sdf
  2. 我做了很多的搜索要求之前。我看到了類似的問題,但即使一個人也不適合我。
  3. 數據在編譯時添加但未提交到數據庫。我可以在第二次嘗試調試後看到數據。
  4. 請詳細解釋一下。

感謝

+0

using(SqlCeConnection connection = new SqlCeConnection(connectionString))con)) 這裏的con是什麼? – 62071072SP

+0

這將是我評論刪除,修正!,謝謝 –

+0

你的數據庫文件位於何處?在bin目錄中?檢查它是否未被默認文件覆蓋並嘗試將其放置在其他位置。 – Peter

回答

1

你可能會面臨這樣的,http://erikej.blogspot.com/2010/05/faq-why-does-my-changes-not-get-saved.html建議你使用一個完整路徑數據庫文件的連接的字符串中。

+0

已經完成,Source = | DataDirectory | \ Database_TouchPOS.sdf; Persist Security Info = False;或Source = C:\ Users \ MMGamers-1 \ Documents \ Visual Studio 2010 \ Projects \ TouchPOS \ TouchPOSDatabase_TouchPOS.sdf; Persist Security Info = False; ...不工作 –

+0

它與SQLExpress運行得非常好,但我並不真正想做的事情,我只是想在便攜式驅動器上運行數據庫。BTW,我使用的是.NET Framework 4. –

+1

謝謝@ErikEJ,實際上VS創建一個文件夾「Bin \ Debug」並鏡像數據庫。如果從「Bin \ Debug」連接數據庫。有用。 .Net很奇怪,感謝大家寶貴的時間。例如\ Bin \ Debug \ MyDatabase.sdf。 –

1

你嘗試明確地使用交易?

IDbTransaction transaction = connection.BeginTransaction(); 
//add to database 
transaction.Commit(); // before close connection 
+0

感謝marc_s編輯我的問題, –

+0

@lxti,我曾嘗試與你建議不要工作。文件權限問題?我使用VS2010的窗口7,32位版本。 –

+0

@Wayne Tun,我理解是否正確,數據存儲在數據庫中,並且您在第二次啓動程序後看到它? – Ixti

1

這是一個非常古老的線程,所以我不知道它是否會幫助任何人,如果我把我的答案。

我也有這個問題。 當我在C#中執行更新或插入代碼時,顯然,一切正常,但是當我查找數據庫時,沒有任何更改。

問題是,在調試時我在Management Studio中打開了數據庫。不知何故,即使沒有錯誤信息,這也阻礙了數據庫的更改。 關閉Management Studio並在執行完代碼後將其打開,這些更改完全存儲在數據庫中。

問候。

-1

完整的例子爲那些尋求我一樣... @"Data Source=C:\Users\MYPC\Documents\Visual Studio 2010\Projects\MyProjectFolder\MyProject-1\bin\Debug\MyDatabase.sdf;Persist Security Info=False;";

感謝這個例子。這節省了我的一天。

相關問題