在插入或更新之前检查行是否存在

时间:2013-06-21 06:49:41

标签: c# mysql

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

我想在插入之前检查该行是否已经存在,如果它存在则想要更新它。如果有人能帮助我,我将非常感激,因为我不知道如何去做。非常感谢你

3 个答案:

答案 0 :(得分:4)

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

不幸的是,并非所有数据库都支持REPLACE INTO,但MySQLSQLite支持{。}}。

答案 1 :(得分: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’;

答案 2 :(得分:-1)

  1. 只需编写sql查询来检查行数(在where子句中使用主键)。
  2. 如果count = 0则执行更新查询,如果不执行插入查询。
  3. 注意:使用一个SP执行整个任务,而不是控制代码级别