1. 程式人生 > >SqlParameter防SQL注入的方法

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