Beispiel #1
0
        /// <summary>
        /// Insert wrapper for multiple rows, should be able to do single rows too
        /// </summary>
        /// <param name="table">Name of the table where the data is inserted</param>
        /// <param name="parameters">List of dictionaries each representing a row to be inserted</param>
        /// <param name="callback">FiveM callback function</param>
        /// <param name="lastInsertId">return the last insert id if true, otherwise affected rows</param>
        private async void Insert(string table, dynamic parameters, CallbackDelegate callback = null, bool lastInsertId = false)
        {
            await Initialized();

            MultiRowCommandBuilder multiRow = await ParseMultiRow(table, parameters);

            bool        isInsert   = (callback == null) ? false : lastInsertId;
            Task <long> resultTask = mysql.Query(multiRow.CommandText, multiRow.Parameters, isInsert);

#pragma warning disable CS4014
            resultTask.ContinueWith((task) => callback?.Invoke(task.Result));
#pragma warning restore CS4014
        }
Beispiel #2
0
 /// <summary>
 /// Parsing MultiRow with the TaskScheduler to avoid hitches
 /// </summary>
 /// <param name="table">Name of the table</param>
 /// <param name="parameters">List of dictionarys which represent each row inserted</param>
 /// <returns>Returns the MultiRow object which consists of a built query string and a set of parameters</returns>
 private async Task <MultiRowCommandBuilder> ParseMultiRow(string table, dynamic parameters) => await Task.Factory.StartNew(() =>
 {
     return(MultiRowCommandBuilder.TryParse(table, parameters));
 }, CancellationToken.None, TaskCreationOptions.None, taskScheduler);