天天看點

SqlParameter防SQL注入的方法

1、 SqlParameter 構造函數

SqlParameter(String, SqlDbType, Int32,ParameterDirection, Byte, Byte, String, DataRowVersion, Boolean, Object,String, String, String),其參數分别代表該類使用參數名、參數的類型、參數的長度、方向、精度、小數位數、源列名稱、DataRowVersion 值之一、用于源列映射的布爾值、SqlParameter 的值、此 XML 執行個體的架構集合所在的資料庫的名稱、此 XML 執行個體的架構集合所在的關系架構以及此參數的架構集合的名稱。

2、  SqlParameter的應用

List<CommandInfo> cmd = new List<CommandInfo>();
for (int i = 0; i < dt.Rows.Count; i++)
{
  StringBuilder strSqlConfig = new StringBuilder();
  strSqlConfig.Append("insert into CMB_UpdateStatus_OnlineRecord(OnlineRecordTicketNo,SiemensEmployeeName)"
      + " values(@Tno,@Name) ");
  try
    {
       SqlParameter[] paraConfig ={ new SqlParameter("@Tno", SqlDbType.NVarChar, 10),
                                   new SqlParameter("@Name", SqlDbType.NVarChar,50)};
       paraConfig[0].Value = dt.Rows[i]["機票号"].ToString();
        paraConfig[1].Value = dt.Rows[i]["姓名"].ToString();
       cmd.Add(new CommandInfo(strSqlConfig.ToString(), paraConfig));
     }
   catch (Exception ex)
    {
        MessageBox.Show("excel寫入資料庫時發生錯誤:{0}", ex.Message);
        return;
     }
    }
  Hippo.ExecuteSqlTran(cmd);
           

3、 SqlParameter的基本原理是執行計劃重用。即對注入後的SQL語句重新進行了編譯,重新執行了文法解析。

參考:https://www.2cto.com/article/201402/281712.html

繼續閱讀