多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Access sql語句構建(規避單引號)

Access sql語句構建(規避單引號)

來源:程序員人生   發布時間:2014-05-24 02:49:49 閱讀次數:2529次

簡單的一個執行Update的語句,條件確定,當然這樣很傻,尚待提高,代碼如下:

public bool ExeHashTableSqlstr(Hashtable ht, string TableName, string where)
{
List<OleDbParameter> ParList = new List<OleDbParameter>();
foreach (DictionaryEntry item in ht)//key 是字段名 value是當前值,對應屬性里有各自的數據類型
{
ParList.Add(new OleDbParameter("@" + item.Key.ToString(), item.Value));
}
#region 構建sqlStr
string contents = " ";
Int16 count = 0;
foreach (OleDbParameter item in ParList)
{
contents += item.ParameterName.Substring(1);
contents += "=";
contents += item.ParameterName;
count++;
if (count != ht.Count)
{
contents += ", ";
}
}
string sqlString = "UPDATE " + TableName + " SET " + contents;
if (where != "")
{
sqlString += " where " + where + ";";
}
else
{
sqlString += ";";
}
#endregion
Open();
OleDbCommand cmd = new OleDbCommand(sqlString, mConn);
foreach (OleDbParameter par in ParList)
{
cmd.Parameters.Add(par);
}
if (cmd.ExecuteNonQuery() >= 1)
{
Close();
return true;
}
else
{
Close();
return false;
}
}

這里有兩個有意思的地方,

用OleDbParameter和OleDbCommand 兩個對象來調用sql語句,不需要對任何字符串的sql語句預處理,如包含單引號,換行符等。

參考以下:OleDbParameter參數的使用

運用參數可防止一些sql攻擊

public bool judIDPW(string CustomerName, string CustomerPassword)
{
OleDbParameter par1 = new OleDbParameter();
par1.ParameterName = "@CustomerName";
par1.Value = CustomerName;
OleDbParameter par2 = new OleDbParameter();
par2.ParameterName = "@CustomerPassword";
par2.Value =Security.Encrypt(CustomerPassword);

OleDbCommand cmd = new OleDbCommand("select CustomerID from Customers where CustomerName=@Customer and CustomerPassword=@CustomerPassword", con);
cmd.Parameters.Add(par1);
cmd.Parameters.Add(par2);
con.Open();
OleDbDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
con.Close();
return true;
}
else
{
con.Close();
return false;
}
}

使用用OleDbParameter(String, Object)的技巧:

List<OleDbParameter> ParList = new List<OleDbParameter>();
foreach (DictionaryEntry item in ht)//key 是字段名 value是當前值,對應屬性里有各自的數據類型
{
ParList.Add(new OleDbParameter("@" + item.Key.ToString(), item.Value));
}

public bool ExeHashTableSqlstr(Hashtable ht, string TableName, string where)
{
List<OleDbParameter> ParList = new List<OleDbParameter>();
foreach (DictionaryEntry item in ht)//key 是字段名 value是當前值,對應屬性里有各自的數據類型
{
ParList.Add(new OleDbParameter("@" + item.Key.ToString(), item.Value));
}
#region 構建sqlStr
string contents = " ";
Int16 count = 0;
foreach (OleDbParameter item in ParList)
{
contents += item.ParameterName.Substring(1);
contents += "=";
contents += item.ParameterName;
count++;
if (count != ht.Count)
{
contents += ", ";
}
}
string sqlString = "UPDATE " + TableName + " SET " + contents;
if (where != "")
{
sqlString += " where " + where + ";";
}
else
{
sqlString += ";";
}
#endregion
Open();
OleDbCommand cmd = new OleDbCommand(sqlString, mConn);
foreach (OleDbParameter par in ParList)
{
cmd.Parameters.Add(par);
}
if (cmd.ExecuteNonQuery() >= 1)
{
Close();
return true;
}
else
{
Close();
return false;
}
}

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 狼人天堂网 | 一区二区在线不卡 | 久久久久综合网久久 | 国产亚洲精品精品国产亚洲综合 | 鲁一鲁色| 国产精品福利社 | 中文字幕第一页在线 | 2020久久精品国产免费 | 黄a毛片 | 不卡一级aaa全黄毛片 | 在线观看免费亚洲 | 亚洲一一在线 | 夜夜躁日日躁 | 含羞草www在线视频免费 | 伊人久久大香线蕉免费视频 | 精品乱码一区二区三区在线 | 国产成人亚洲精品影院 | 免费观看成年欧美1314www色 | 伊人影院99 | 曰本裸色私人影院噜噜噜影院 | 中文字幕区 | 日韩国产精品99久久久久久 | 日韩精品免费一级视频 | 国内久久精品视频 | 免费精品国产福利片 | 日本在线观看一区二区三区 | 秋霞理论最新三级理论最 | 日韩精品久久不卡中文字幕 | 亚洲欧美日韩综合久久久久 | 中文字幕23页 | 国产在线视频一区二区三区 | 欧美福利视频一区在线 | 国产一区二区视频在线 | 欧美aav| 国产成人久久一区二区三区 | 婷婷五月在线视频 | 中文字幕精品一区二区精品 | 亚洲成在线观看 | 久久精品国产主播一区二区 | 日本高清www无色夜在 | 九九精|