public static T[] Query <T>(this MySqlDriver driver, FormattableString query) { driver.Open(); var reader = driver.Query(query); var converter = ConverterCache <T> .GetConverter(reader); var array = ThreadStaticArrayPool <T> .GetArray(); var count = 0; while (reader.Read()) { if (count == array.Length) { Array.Resize(ref array, checked ((int)(count * 1.5))); } var v = converter(reader); array[count++] = v; } if (array == ThreadStaticArrayPool <T> .GetArray()) { var result = new T[count]; Array.Copy(array, result, count); Array.Clear(array, 0, count); // null clear return(result); } else { Array.Resize(ref array, count); return(array); } }
public static IEnumerable <T> QueryEnumerable <T>(this MySqlDriver driver, FormattableString query) { driver.Open(); var reader = driver.Query(query); var converter = ConverterCache <T> .GetConverter(reader); while (reader.Read()) { var v = converter(reader); yield return(v); } }
static void Main(string[] args) { var option = new MySqlSharp.MySqlConnectionOptions { Server = "", Database = "", UserId = "", Password = "", }; var driver = new MySqlDriver(option); driver.Open(); var reader = driver.Query <long>($"select 1543535353 as aaa, 1234213, 21313"); //var nextReader = reader.CreateNextReader(); //nextReader.rea ////var prepare = driver.Prepare("select version() as v, 199 as num union select version(), 399"); //var prepare = driver.Prepare("select 1"); //var reader = driver.Execute(prepare.StatementId); //while (reader.Read()) //{ // //var a = reader.GetString(0); // var b = reader.GetInt32(0); //} /* * var reader = driver.Query("select version() as v, 199 as num union select version(), 399"); * * while (reader.MoveNext()) * { * // set. * * var s = reader.GetString(0); * var i = reader.GetInt32(1); * } */ }
public static T[] QueryOne <T>(this MySqlDriver driver, FormattableString query) { driver.Open(); var reader = driver.Query(query); // reader.ColumnDefinitions // reader.ColumnDefinitions // var pool = System.Buffers.ArrayPool<T>.Shared.Rent(1024); // reader.ColumnDefinitions // System.Buffers.ArrayPool<T>.Shared.Return(pool, true); // create final buffer. // (query.Format), // return Cache<T>.convert(reader); // Array.Clear(0, // reader.ColumnDefinitions return(null); }
/// <summary>SELECT * from COLLATIONS</summary> public static Collations Collations(MySqlDriver driver) { var query = driver.Query("SELECT * from COLLATIONS"); throw new NotImplementedException("TODO:Mapping"); }