SQL Compact Edition插入C#

我试图将一些值插入到这样的SQL CE数据库中,没有任何反应。 我做错了什么?

string strConn = Properties.Settings.Default.SqlConnectionString; using (SqlCeConnection con = new SqlCeConnection(strConn)) { con.Open(); using (SqlCeCommand cmd = new SqlCeCommand("insert into CustTable(ID, Name) values (@Val1, @val2)", con)) { cmd.Parameters.AddWithValue("@Val1", customer.ID); cmd.Parameters.AddWithValue("@Val2", customer.Name); cmd.CommandType = System.Data.CommandType.Text; cmd.ExecuteNonQuery(); } } 

你是如何“试图插入一些价值……”? 您是否从Visual Studio运行应用程序? 为什么你认为“没有发生”? 您在运行应用程序后打开原始的.sdf文件吗?

在解决方案资源管理器中检查数据库文件的“复制文件”属性; 它是“复制”吗? 这意味着Visual Studio将在bin文件夹中创建原始数据库文件的副本,并将连接字符串设置为该路径。 所有更改都发生在副本上,如果您检查原始文件,它将保持不变。

还有另一个问题是同样的问题; 看看是否有帮助。

看起来你忘了先打开连接 – 试试这个:

  using (SqlCeConnection con = new SqlCeConnection(strConn)) { con.Open(); using (SqlCeCommand cmd = new SqlCeCommand("insert into CustTable(ID, Name) values (@Val1, @val2)",con)) { cmd.Parameters.AddWithValue("@Val1", customer.ID); cmd.Parameters.AddWithValue("@Val2", customer.Name); cmd.CommandType = System.Data.CommandType.Text; cmd.ExecuteNonQuery(); } } 

试试这个。

 using (SqlCeConnection con = new SqlCeConnection(strConn)) { SqlCeParameter par; con.Open(); SqlCeCommand cmd = con.CreateCommand(); cmd.CommandText = "insert into CustTable(ID, Name) values (@Val1, @val2)"; // Create the parameters par = new SqlCeParameter("@Val1", SqlDbType.Int); cmd.Parameters.Add(par); par = new SqlCeParameter("@Val2", SqlDbType.NChar, 50); cmd.Parameters.Add(par); // Set the values cmd.Parameters["@Val1"].Value = customer.ID; cmd.Parameters["@Val2"].Value = customer.Name; cmd.ExecuteNonQuery(); // Dispose cmd.Dispose(); }