int PrepareSimpleQuery(StringBuilder sb, string query, IList userParametersList, int userParametersListStart)
{
int queryCurrentPosition = 0;
int userParametersListPosition = userParametersListStart;
if (userParametersList.Count > 0) {
for (SimpleMatch m = ParameterRegExp.Match(query);
m.Success;m = m.NextMatch()) {
SimpleCapture parameterCapture = m;
sb.Append(query,queryCurrentPosition,parameterCapture.Index - queryCurrentPosition);
// advance in query
queryCurrentPosition = parameterCapture.Index + parameterCapture.Length;
AbstractDbParameter userParameter = GetUserParameter(parameterCapture.Value, userParametersList, userParametersListPosition);
if (userParameter != null) {
if (IsNullParameter(userParameter)) {
sb.Append("null");
NullParametersInPrepare = true;
}
else {
sb.Append('?');
InternalParameters.Add(userParameter);
}
// advance in user parameters
userParametersListPosition++;
}
else {
sb.Append(parameterCapture.Value);
}
}
}
sb.Append(query,queryCurrentPosition,query.Length - queryCurrentPosition);
int userParamsConsumed = userParametersListPosition - userParametersListStart;
if ((Behavior & CommandBehavior.KeyInfo) == 0)
return userParamsConsumed;
AbstractDBConnection connection = (AbstractDBConnection)Connection;
if (connection == null)
return userParamsConsumed;
string dbname = connection.JdbcConnection.getMetaData().getDatabaseProductName();
if (dbname == "Microsoft SQL Server") { //must add "FOR BROWSE" for selects
#if USE_DOTNET_REGEX
if (!SqlStatementsHelper.ForBrowseStatementReqExp.IsMatch(query))
sb.Append(" FOR BROWSE");
#else
if (!SqlStatementsHelper.ForBrowseStatementReqExp.matcher ((java.lang.CharSequence)(object)query).find ())
sb.Append (" FOR BROWSE");
#endif
}
return userParamsConsumed;
}