void RemoveUnusedParameters() { DbParameterCollection parameters = m_inner.Parameters; if (m_params == null) { Debug.Assert(parameters.Count == 0); return; } else if (parameters.Count == 0) { return; } else { Debug.Assert(m_params != null); } ParamPicker picker = new ParamPicker(); m_statement.Traverse(picker); for (int i = parameters.Count - 1; i >= 0; --i) { DbParameter last = parameters[i]; string name = last.ParameterName; if ((name != null) && !name.Equals("")) { if (!picker.IsParam(name)) { parameters.Remove(last); } } } }
public void GetUniqueParams() { ParamPicker paramPicker = new ParamPicker(); Assert.IsNull(paramPicker.GetUniqueParams()); IStatement statement = Factory.CreateStatement( "update t set id=:id, a=:a, b=:b where id=@ID"); statement.Traverse(paramPicker); string[] actual = paramPicker.GetUniqueParams(); string[] expected = { ":a", ":b", ":id" }; Assert.AreEqual(expected, actual); }
public void TestGetAllParams() { ParamPicker paramPicker = new ParamPicker(); Assert.IsNull(paramPicker.GetAllParams()); IStatement statement = Factory.CreateStatement( "INSERT t(a, b, c) VALUES(@a, @b, @c)"); statement.Traverse(paramPicker); string[] actual = paramPicker.GetAllParams(); string[] expected = { "@a", "@b", "@c" }; Assert.AreEqual(expected, actual); paramPicker = new ParamPicker(); statement = Factory.CreateStatement( "INSERT t(a, b, c) VALUES(1, 2, 3)"); actual = paramPicker.GetAllParams(); Assert.IsNull(actual); }