2009-11-17 24 views
-3

我想刪除表中的一些記錄,在C#中運行此查詢是它正確與否,從表中刪除記錄,這是正確的嗎?

請幫我

SqlCommand cmdRe = new SqlCommand("insert into msisdn_master SELECT * from tblDeactive 
where msisdn in (" + str_MSISDN + ")", cn); 
SqlCommand cmdRed = new SqlCommand("delete from tblDeactive where msisdn in ("+str_MSISDN+")", cn); 
cmdRe.CommandType = CommandType.Text; 
cmdRed.CommandType = CommandType.Text; 

注:str_MSISDN是存儲插入數的StringBuilder在TextField中。

+2

如何格式化它以使其可讀(縮進代碼4個字符以允許將其視爲代碼),並說明您在試圖做什麼。 –

回答

3

您應該使用正確的SQL參數。切勿使用字符串構建,因爲這會讓您打開注入式攻擊。

閱讀本教程以瞭解如何使用add parameters to SqlCommands

+0

永遠不要說永遠。如果該StringBuilder不是由用戶輸入構建的,則可能比使用參數更好。由於ids數量未知,查詢可能不會緩存在Sql Server中。 –

+1

@Yuriy:我會同意「從不」很強,但動態SQL是最後的手段。 「未知數量的身份證」不是理由。還有其他更好的方法。 –

+0

@Joel:我會咬,這是你的問題。你有一個應用程序,其中Id字段是Guid。該應用程序沒有用戶輸入。它通常會刪除單個表中的10,000行。拾取的行不能從數據庫中的其他數據派生。你是做什麼? –