在我的Windows窗体应用程序中,我正在使用SQL Server Compact数据库。我有一个函数,我想在表'owner'中更新列'id'和'name',除非指定的id不存在,在这种情况下我想要插入新的值。
例如,我当前的表有'id'1和2.它可能有'id'3.用户输入数据以插入/更新id 3.
我希望我的查询能够执行以下操作:
UPDATE owner
SET name = @InputN
WHERE id = 3
IF @@ROWCOUNT = 0
INSERT INTO owner (id, name) VALUES 3, @InputN
我应该如何定义我的查询才能在SQL Server Compact Edition中使用它?
答案 0 :(得分:0)
您应该在表单代码中执行此操作。这样你甚至不需要检查是否存在值为3的di。它将自行检查并更新行(如果存在)。如果不是,你不会得到任何错误。
RSSql.UpdateNonQueryParametric("update owner set name=? where id=3", newname);
public static void UpdateNonQueryParametric(string query, params Object[] parameters)
{
SqlCeParameter[] param = new SqlCeParameter[parameters.Length];
for (int i = 0; i < parameters.Length; i++)
{
param[i] = new SqlCeParameter();
param[i].Value = parameters[i];
}
_cnt = new SqlCeConnection();
_cnt.ConnectionString = ConnectionString;
_cmd = new SqlCeCommand();
_cmd.Connection = _cnt;
_cmd.CommandType = System.Data.CommandType.Text;
_cmd.CommandText = query;
_cmd.Parameters.AddRange(param);
if (_cnt.State != System.Data.ConnectionState.Open)
_cnt.Open();
_cmd.ExecuteNonQuery();
_cmd.Dispose();
if (_cnt.State != System.Data.ConnectionState.Closed)
_cnt.Close();
_cnt.Dispose();
}