MySql.Data.MySqlClient.MySqlCommand.GetCommandTextForBatching C# (CSharp) Method

GetCommandTextForBatching() private method

private GetCommandTextForBatching ( ) : string
return string
        internal string GetCommandTextForBatching()
        {
            if (batchableCommandText == null)
            {
                // if the command starts with insert and is "simple" enough, then
                // we can use the multi-value form of insert
                if (String.Compare(CommandText.Substring(0, 6), "INSERT", true) == 0)
                {
                    MySqlCommand cmd = new MySqlCommand("SELECT @@sql_mode", Connection);
                    string sql_mode = cmd.ExecuteScalar().ToString().ToUpper(CultureInfo.InvariantCulture);
                    MySqlTokenizer tokenizer = new MySqlTokenizer(CommandText);
                    tokenizer.AnsiQuotes = sql_mode.IndexOf("ANSI_QUOTES") != -1;
                    tokenizer.BackslashEscapes = sql_mode.IndexOf("NO_BACKSLASH_ESCAPES") == -1;
                    string token = tokenizer.NextToken().ToLower(CultureInfo.InvariantCulture);
                    while (token != null)
                    {
                        if (token.ToUpper(CultureInfo.InvariantCulture) == "VALUES" && 
                            !tokenizer.Quoted)
                        {
                            token = tokenizer.NextToken();
                            Debug.Assert(token == "(");

                            // find matching right paren, and ensure that parens 
                            // are balanced.
                            int openParenCount = 1;
                            while (token != null)
                            {
                                batchableCommandText += token;
                                token = tokenizer.NextToken();

                                if (token == "(")
                                    openParenCount++;
                                else if (token == ")")
                                    openParenCount--;

                                if (openParenCount == 0)
                                    break;
                            }

                            if (token != null)
                                batchableCommandText += token;
                            token = tokenizer.NextToken();
                            if (token != null && (token == "," || 
                                token.ToUpper(CultureInfo.InvariantCulture) == "ON"))
                            {
                                batchableCommandText = null;
                                break;
                            }
                        }
                        token = tokenizer.NextToken();
                    }
                }
            }

            return batchableCommandText;
        }

Usage Example

コード例 #1
0
ファイル: MySqlDataAdapter.cs プロジェクト: Jackjet/ECOSingle
        protected override int AddToBatch(IDbCommand command)
        {
            MySqlCommand mySqlCommand = (MySqlCommand)command;

            if (mySqlCommand.BatchableCommandText == null)
            {
                mySqlCommand.GetCommandTextForBatching();
            }
            IDbCommand item = (IDbCommand)((ICloneable)command).Clone();

            this.commandBatch.Add(item);
            return(this.commandBatch.Count - 1);
        }
All Usage Examples Of MySql.Data.MySqlClient.MySqlCommand::GetCommandTextForBatching