2013年10月2日 星期三

[C#] 動態加入SqlParameter參數

利用ADO.NET做資料庫查詢時,常常會使用到SqlParameter,
如果是使用在 IN 條件式的查詢,動態加入SqlParameter 參數就可以幫很大的忙。

方法:

///動態設定SqlParameters
List<SqlParameter> sqlParamList = new List<SqlParameter>();
sqlParamList.Add(new SqlParameter("@參數名稱A", "參數值"));
sqlParamList.Add(new SqlParameter("@參數名稱B", "參數值"));

///將List<SqlParameter>轉換為SqlParameter[]
SqlParameter[] sqlParams = sqlParamList.ToArray();



底下是我寫的一個簡單可動態設定SQL參數並回傳SQL查詢字串,可以用於IN條件式。

/// <summary>
/// 動態設定SQL參數: [SQL參數名稱][1~maxCnt]
/// </summary>
/// <param name="ParamList">List of SqlParameters</param>
/// <param name="Values">SQL參數值陣列</param>
/// <param name="paramNamePrefix">SQL參數名稱</param>
/// <param name="maxCnt">動態加入的次數</param>
/// <returns>Sql查詢文字(可用於IN 查詢)</returns>
public String SetSqlParameterList(
            ref List<SqlParameter> sqlParamList, String[] Values, String paramNamePrefix, int maxCnt)
        {
            String sql_Params = String.Empty; //Sql查詢文字,如 @XXX1,@XXX2,@XXX3 ...
            try
            {
                ///動態設定SqlParameters
                for (int i = 0; i < maxCnt; i++)
                {
                    //指定SqlParameter Name
                    String paramName = String.Format("@{0}{1}", paramNamePrefix, i.ToString());
                    //加入到SqlParamList
                    sqlParamList.Add(new SqlParameter(paramName, Values[i])); 
                    //設定Sql查詢文字
                    sql_Params += paramName + ","; //加入到sql_Params
                }
                sql_Params = sql_Params.Remove((sql_Params.Length - 1), 1); //去除最後一個逗號

                return sql_Params;
            }
            catch (Exception)
            {
                throw;
            }
        }

沒有留言:

張貼留言