#region SetInWord SQL中存在IN时候的设置publicstaticvoidSetInWord(thisOracleCommand cmd,string strParamKey,string[] values){// 开头的@和:去掉var strKeyOrignal = strParamKey.Replace(":",string.Empty).Replace("@",string.Empty);var word =string.Empty;for(var i =1; i < values.Length +1; i++){// AddWord 是cmd.Parameters追加的参数(:A这种格式) // word是SQL中IN语句后追加
var AddWord =":"+ strKeyOrignal + i.ToString();// 第一次if(i ==1)
word = AddWord;// 第二次及其以后else
word +=" ,"+ AddWord;// Parameters追加
cmd.Parameters.Add(AddWord, OracleDbType.Char).Value = values[i -1];}// cmd内的SQL中的IN中的值设置
cmd.CommandText = cmd.CommandText.Replace(strParamKey, word);}#endregion
使用方法
sbSQL.AppendLine(" SELECT NAME FROM STUDENT");
sbSQL.AppendLine(" WHERE NO IN (@IN) ");OracleCommand cmd =newOracleCommand();
cmd.Connection = con;
cmd.BindByName =true;
cmd.CommandText = sbSQL.ToString();
cmd.Parameters.Clear();// パラメータの設定
cmd.SetInWord("@HACHU_SAKI_CD", vals);