我有一系列刀片要在表中進行了非常大的列數,例如:默認命令paramters插入
INSERT INTO Table1 (A,B,C,...,Z) VALUES (@a,@b,@c,...,@z)
所有字段(A至Z)可爲空。如果您未能明確設置已寫入命令文本的命令參數,則無法執行插入操作。
由於列名不是真正順序的(都有相當隨機的名稱),有沒有簡單的方法來循環命令文本中的參數並將它們設置爲DBNull.Value
?還是我手動寫出來,:
cmd.Parameters.AddWithValue("@a", DBNull.Value);
cmd.Parameters.AddWithValue("@b", DBNull.Value);
cmd.Parameters.AddWithValue("@c", DBNull.Value);
...
cmd.Parameters.AddWithValue("@z", DBNull.Value);
或者是建造一列實際上是在使用和一起將它們連接起來(和使用的參數),然後設置使用的參數正確的解決方案?
我傾向於迴避串聯解決方案的查詢以避免潛在的注入攻擊。
我想說如果我只需要設置@a,剩下的就爲空:我會繼續設置@a。然後執行類似於你的答案的循環,只添加一個檢查,只添加參數爲null,如果命令的參數列表尚未包含該參數。 – user17753