2011-09-08 130 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;";

感谢这个例子。这节省了我的一天。

相关问题