2016年3月21日 星期一

ASP.NET SQL語法用in時,Parameters指令如何下

ASP.NET SQL語法用in時,Parameters指令如何下 本範例是為了找出主管所管轄之下的所有資料,故比較複雜,請直接看以下列數: 17,20,30,31,32,33,34,35,36,37,46,47

  1. DataTable dt = new DataTable();
  2.  
  3.                 SqlCommand cmd = new SqlCommand();
  4.  
  5.                 StringBuilder sbSql = new StringBuilder();
  6.  
  7.                 sbSql.AppendLine("SELECT * FROM " + VIEWNAME + " ");
  8.  
  9.  
  10.  
  11.                 if (!string.IsNullOrEmpty(strKeyword))
  12.  
  13.                 {
  14.  
  15.                     //sbSql.Append(" AND (name +batchnumber + jobtitles + CONVERT(varchar(30),joblevel) +  workingfunc + ogno + ogname + ouno + ouname + ename + status + CONVERT(varchar(30),cdt,120) like @strKeyword) ");
  16.  
  17.                     //select tblA.* from t_HRM_Evaluation tblA join dbo.FN_SPLIT_TBL('張,陳,王',',') tblB on tblA.name like '%'+tblB.Value+'%'
  18.  
  19.                     sbSql.Append(" JOIN dbo.FN_SPLIT_TBL(@strKeyword,',') tblB ON docno + patentcname + patentename + ogno + ogname + ouno + ouname + ouename + status + confirms + CONVERT(varchar(30),cdt,120) LIKE '%'+tblB.Value+'%' ");
  20.  
  21.                     cmd.Parameters.AddWithValue("@strKeyword", strKeyword);
  22.  
  23.                 }
  24.  
  25.  
  26.  
  27.                 sbSql.Append(" WHERE 1=1 ");
  28.  
  29.                 sbSql.Append(" AND delete_flag=@delete_flag ");
  30.  
  31.                 cmd.Parameters.AddWithValue("@delete_flag", delete_flag);
  32.  
  33.                 sbSql.Append(" AND ouoid in (");
  34.  
  35.  
  36.  
  37.  
  38.  
  39.                 int i = 1;
  40.  
  41.                 if (dasgroup.IsManager(uoid, HRM.STATUS_LIST.ACTIVE, false, 400, 500) > 0)
  42.  
  43.                 {
  44.  
  45.                     //找出該員所管轄部門
  46.  
  47.                     DataTable dtg = dasgroup.GetDataByLeader(HRM.STATUS_LIST.ACTIVE, false, uoid);
  48.  
  49.                     foreach (DataRow drg in dtg.Rows)
  50.  
  51.                     {
  52.  
  53.                         //找出部門下成員
  54.  
  55.                         Guid _goid = CUtility.StringToGuid(drg["oid"].ToString());
  56.  
  57.                         DataTable dtu = dasuser.GetChildDeptUser(_goid);
  58.  
  59.                         foreach (DataRow dru in dtu.Rows)
  60.  
  61.                         {
  62.  
  63.                             // IN clause
  64.  
  65.                             sbSql.Append("@UserId" + i.ToString() + ",");
  66.  
  67.                             // parameter
  68.  
  69.                             cmd.Parameters.AddWithValue("@UserId" + i.ToString(), CUtility.StringToGuid(dru["oid"].ToString()));
  70.  
  71.                             i++;
  72.  
  73.                         }
  74.  
  75.                     }
  76.  
  77.                 }
  78.  
  79.                 else
  80.  
  81.                 {
  82.  
  83.                     sbSql.Append("@UserId" + i.ToString() + ",");
  84.  
  85.                     cmd.Parameters.AddWithValue("@UserId" + i.ToString(), uoid);
  86.  
  87.                 }
  88.  
  89.  
  90.  
  91.                 cmd.CommandText = sbSql.ToString();
  92.  
  93.                 cmd.CommandText = cmd.CommandText.Remove(cmd.CommandText.Length - 1, 1) + ")";
  94.  
  95.                
  96.  
  97.  
  98.  
  99.                 dt = sdp.GetDataTable(cmd);
  100.  
  101.                 return dt;

Ref Url: https://dotblogs.com.tw/jeff-yeh/2008/09/05/5308

沒有留言:

張貼留言