优化字符串拼接与不分页导出
This commit is contained in:
		@@ -152,7 +152,14 @@ namespace Chenfeng.MES.Archiver.Commands
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                var valString = new StringBuilder();
 | 
					                var valString = new StringBuilder();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                using (var reader = cmd.ExecuteReader())
 | 
					                var queryWatch = Stopwatch.StartNew();
 | 
				
			||||||
 | 
					                var reader = cmd.ExecuteReader();
 | 
				
			||||||
 | 
					                queryWatch.Stop();
 | 
				
			||||||
 | 
					                if (queryWatch.ElapsedMilliseconds > 10_000)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Print("slow sql:" + sql + ",page:" + pageIndex);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                using (reader)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (columnString.Length == 0)
 | 
					                    if (columnString.Length == 0)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -166,32 +173,38 @@ namespace Chenfeng.MES.Archiver.Commands
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    while (reader.Read())
 | 
					                    while (reader.Read())
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        var row = new List<object>();
 | 
					                        //var row = new List<object>();
 | 
				
			||||||
 | 
					                        valString.Append('(');
 | 
				
			||||||
                        for (int i = 0; i < reader.FieldCount; i++)
 | 
					                        for (int i = 0; i < reader.FieldCount; i++)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            var val = reader.GetValue(i);
 | 
					                            var val = reader.GetValue(i);
 | 
				
			||||||
 | 
					                            object newVal;
 | 
				
			||||||
                            switch (val)
 | 
					                            switch (val)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                case bool b:
 | 
					                                case bool b:
 | 
				
			||||||
                                    row.Add(b ? 1 : 0);
 | 
					                                    newVal = b ? 1 : 0;
 | 
				
			||||||
                                    break;
 | 
					                                    break;
 | 
				
			||||||
                                case string s:
 | 
					                                case string s:
 | 
				
			||||||
                                    row.Add($"'{s}'");
 | 
					                                    newVal = $"'{s}'";
 | 
				
			||||||
                                    break;
 | 
					                                    break;
 | 
				
			||||||
                                case DateTime dt:
 | 
					                                case DateTime dt:
 | 
				
			||||||
                                    row.Add('\'' + dt.ToString("yyyy-MM-dd HH:mm:ss") + '\'');
 | 
					                                    newVal = '\'' + dt.ToString("yyyy-MM-dd HH:mm:ss") + '\'';
 | 
				
			||||||
                                    break;
 | 
					                                    break;
 | 
				
			||||||
                                case byte[] byteList:
 | 
					                                case byte[] byteList:
 | 
				
			||||||
                                    row.Add("0x" + string.Concat(byteList.Select(i => i.ToString("X2"))));
 | 
					                                    newVal = "0x" + string.Concat(byteList.Select(i => i.ToString("X2")));
 | 
				
			||||||
                                    break;
 | 
					                                    break;
 | 
				
			||||||
                                default:
 | 
					                                default:
 | 
				
			||||||
                                    row.Add(val);
 | 
					                                    newVal = val;
 | 
				
			||||||
                                    break;
 | 
					                                    break;
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					                            valString.Append(newVal);
 | 
				
			||||||
 | 
					                            if (i < reader.FieldCount-1)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                valString.Append(',');
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        valString.Append($"({string.Join(",", row)}),");
 | 
					                        valString.Append(')');
 | 
				
			||||||
 | 
					                        //valString.Append($"({string.Join(",", row)}),");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    if (valString.Length == 0) break;
 | 
					                    if (valString.Length == 0) break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -229,7 +242,7 @@ namespace Chenfeng.MES.Archiver.Commands
 | 
				
			|||||||
                            //streamWriter.Flush();
 | 
					                            //streamWriter.Flush();
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					                    if (PageSize <= 0) break; // 不分页直接跳出
 | 
				
			||||||
                    pageIndex++;
 | 
					                    pageIndex++;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user