2013-06-21 82 views
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(); 
     } 
} 

我想檢查插入之前該行是否已存在,如果存在則想更新它。如果有人能夠幫助我,我將不勝感激,因爲我不知道該怎麼做。非常感謝檢查插入或更新前是否存在行

+0

你的哪個領域,在那裏你假設記錄存在的領域? –

+3

您應該始終使用[參數化查詢](http://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or-give-me-death.html)。這種字符串連接對於[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)攻擊是開放的。 –

+0

你可以通過c#代碼或sql來做到這一點。 –

回答

3

只需使用REPLACE INTO而不是INSERT INTO。但是,您必須爲您認爲創建記錄的字段組合創建唯一索引。

不幸的是,不是所有的數據庫都支持REPLACE INTO,但是MySQLSQLite呢。

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’; 
+0

+1尼斯解決方案。我不知道那種方式。 (其實我沒有搜索):) –

+1

這看起來非常重,並且容易發生併發問題。另外,除非您爲'UPDATE'中提到的字段列表創建複合索引,否則它將工作得很慢。但是,一旦創建了這樣的索引,'REPLACE INTO'將會工作得更快,並且更短(並且可以原子引導)。 – mvp

+0

所有的字段實際上,因爲我想從Excel電子表格添加數據到數據庫,所以如果該記錄已經存在它不應該存儲,目前,因爲它的插入語句,它只是插入一切。 @kostasch。 – Vithiyah

0
  1. 只需編寫SQL查詢來檢查行數(使用WHERE子句中的主鍵)的。
  2. 如果計數= 0,則執行更新查詢,如果不執行插入查詢。

注意:使用一個SP執行整個任務,而不是採取控制代碼級

相關問題