SQL Server CE更新或插入查询

时间:2014-08-26 16:52:26

标签: sql sql-server-ce

在我的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中使用它?

1 个答案:

答案 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();
        }