写了这么多年的程序,相信大家都知道连接数据库少不了这几个对象,DbConnection,DbCommand,DbDataReader等等。。先来看看ContinueWith在连接数据库时嵌套过深的尴尬。
当年异步和并发编程概念特别火,火热度参考现在的直播带货,这个时期的C#率先使用新的Task一网兜,在数据库操作的几大类中开始有了Async结尾的方法,如OpenAsync,ExecuteScalarAsync,ReadAsync 等等
1.DB NetFramework 4.5 下 await,async的写法
1 public static async Task<int> AsyncGetCount() 2 { 3 using (var connection = new MySqlConnection("server=xxx.xxx.xxx.xxx;userid=xxx;password=xxx;database=xxx;charset=utf8;port=3306;")) 4 { 5 await connection.OpenAsync(); 6 using (var command = connection.CreateCommand()) 7 { 8 command.CommandText = "select count(1) from messages"; 9 10 var count = await command.ExecuteScalarAsync(); 11 12 Console.WriteLine($"记录条数:{count}"); 13 14 return Convert.ToInt32(count); 15 } 16 } 17 } 18 19 -------- output ------------- 20 21 记录条数:75896
循环写法
public static async Task<List<string>> AsyncGetMessageList() { var messageList = new List<string>(); using (var connection = new MySqlConnection("server=xxx.xxx.xxx.xxx;userid=xxx;password=xxx;database=xxx;charset=utf8;port=3306;")) { await connection.OpenAsync(); using (var command = connection.CreateCommand()) { command.CommandText = "select message from messages limit 5;"; using (var reader = await command.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { messageList.Add(reader["message"].ToString()); } } } } return messageList; } ------------ output ---------------- 你需要忘记失去的,感激拥有的,和期待将至的。 以前的找不到了。 对于编译错误,删除Pods文件夹然后重新pod install已经成为经验。次。 Hello,Is there anyone here? 放松心情
https://www.cnblogs.com/huangxincheng/p/12752849.html
并行编程中将lock锁次数降到最低实现无锁编程
var all = filterItemList.AsParallel().Select(m => GetCustomerIDList(m)).WithDegreeOfParallelism(2).ToList(); IEnumerable<int> final = all[0]; all.ForEach(m => final = final.Intersect(m));
public static async Task<List<string>> AsyncGetMessageList() { var messageList = new List<string>(); using (var connection = new MySqlConnection("server=xxx.xxx.xxx.xxx;userid=xxx;password=xxx;database=xxx;charset=utf8;port=3306;")) { await connection.OpenAsync(); using (var command = connection.CreateCommand()) { command.CommandText = "select message from messages limit 5;"; using (var reader = await command.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { messageList.Add(reader["message"].ToString()); } } } } return messageList; } ------------ output ---------------- 你需要忘记失去的,感激拥有的,和期待将至的。 以前的找不到了。 对于编译错误,删除Pods文件夹然后重新pod install已经成为经验。次。 Hello,Is there anyone here? 放松心情
publicstatic async Task<int> AsyncGetCount() { using (var connection = new MySqlConnection("server=xxx.xxx.xxx.xxx;userid=xxx;password=xxx;database=xxx;charset=utf8;port=3306;")) { await connection.OpenAsync(); using (var command = connection.CreateCommand()) { command.CommandText = "select count(1) from messages"; var count = await command.ExecuteScalarAsync(); Console.WriteLine($"记录条数:{count}"); return Convert.ToInt32(count); } } } -------- output ------------- 记录条数:75896