4
public static void StoreGrid(ICAUploadDAO result)
{
      string queryString = "INSERT INTO Result (ModuleGrp, PEM, AdmNo, Name, ICA1, ICA2, ICA3, ICA4, ModuleCode) values ('" + @result.ModuleGrp + "','" + @result.PEM + "','" + @result.AdmNo + "','" + @result.Name + "','" + @result.ICA1 + "','" + @result.ICA2 + "','" + @result.ICA3 + "','" + @result.ICA4 + "','" + @result.ModuleCode + "')";

      string connectionString = Properties.Settings.Default.DBConnection;
      using (SqlConnection connection = new SqlConnection(connectionString))
      {
            SqlCommand command = new SqlCommand(queryString, connection);
            connection.Open();
            command.ExecuteNonQuery();
      }
}

我想在插入之前检查该行是否已经存在,如果存在则想更新它。如果有人能帮我解决这个问题,我将不胜感激,因为我不知道该怎么做。太感谢了

4

3 回答 3

4

只需使用REPLACE INTO而不是INSERT INTO. 但是,您必须为您认为使记录相同的字段组合创建唯一索引。

不幸的是,并不是所有的数据库都支持REPLACE INTO,但是MySQL并且SQLite确实支持。

于 2013-06-21T06:53:37.107 回答
3

不久前我遇到了同样的问题。这是我想出的: http ://remy.supertext.ch/2010/11/mysqlupdate-and-insert-if-not-exists/

INSERT INTO wp_postmeta (post_id, meta_key) SELECT ?id, ‘page_title’  FROM DUAL WHERE NOT EXISTS (SELECT meta_id FROM wp_postmeta WHERE post_id = ?id AND meta_key = ‘page_title’);
UPDATE wp_postmeta SET meta_value = ?page_title WHERE post_id = ?id AND meta_key = ‘page_title’;
于 2013-06-21T06:55:52.420 回答
-1
  1. 只需编写 sql 查询来检查行数(在 where 子句中使用主键)。
  2. 如果 count=0 则执行更新查询,如果不执行插入查询。

注意:使用一个 SP 来执行整个任务,而不是控制代码级别

于 2013-06-21T07:14:21.440 回答