我试图将一些值插入到这样的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();
}
}
答案 0 :(得分:5)
你是如何“试图插入一些价值......”?您是从Visual Studio运行应用程序吗?为什么你认为“没有发生”?您在运行应用程序后打开原始的.sdf文件吗?
在解决方案资源管理器中检查数据库文件的“复制文件”属性;是“复制”吗?这意味着Visual Studio将在bin文件夹中创建原始数据库文件的副本,并将连接字符串设置为该路径。所有更改都发生在副本上,如果您检查原始文件,它将保持不变。
another SO question有同样的问题;看看是否有帮助。
答案 1 :(得分:2)
您好先忘记open连接 - 试试这个:
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();
}
}
答案 2 :(得分:0)
试试这个。
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();
}