private void Convert() { TextBoxSQL.Text = string.Empty; string SQL_str = string.Empty; string s = string.Empty; bool TypesDetected = false; string MayBeName = string.Empty; for (int i = 0; i < TextBoxGraph.LineCount; i++) { for (int j = 0; j < TextBoxGraph.GetLineText(i).Length; j++) { s = TextBoxGraph.GetLineText(i); if ((s[j] == '|')) { s.Substring(j, s.Length - j).Trim().Replace(" ", " "); break; } else { s = string.Empty; } } if (s != string.Empty) { if (SQL_str == string.Empty) { if (TypesDetected == false) { //получим список полей s = Regex.Replace(s, @"\s+", " ").Replace(" ", ""); string[] strs = s.Substring(1, s.Length - 2).Split('|'); //массив типов полей types = new string[strs.Length]; //если у таблицы есть хотя-бы одна строка, пробуем определить тип if ((TextBoxGraph.LineCount > 5) && (TextBoxGraph.GetLineText(i + 2).Length > 3)) { string LineTwo = Regex.Replace(TextBoxGraph.GetLineText(i + 2), @"\s+", " ").Replace(" ", ""); LineTwo = LineTwo.Substring(1, LineTwo.Length - 2).Trim().Replace(" ", " "); string[] s1 = LineTwo.Split('|'); for (int t = 0; t < strs.Length; t++) { types[t] = "int"; int num; try { bool isInt = int.TryParse(s1[t], out num); if (isInt == false) { if (MayBeName == string.Empty) { MayBeName = strs[t] + "s"; } types[t] = "varchar(50)"; } } catch { } if (s1[t].Contains(Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator)) { float number; if (Single.TryParse(s1[t], out number)) { types[t] = "float"; } } } } //синтаксис создания таблицы if (MayBeName == string.Empty) { MayBeName = "..."; } //запросим имя таблицы если не смогли определить if (MayBeName == "...") { TblNameWindow tblnameWindow = new TblNameWindow(); if (tblnameWindow.ShowDialog() == true) { if (tblnameWindow.TblName != String.Empty) { MayBeName = tblnameWindow.TblName; } } } //код SQL создание таблицы и заполнение её данными SQL_str = "create table " + MayBeName + " ("; for (int k = 0; k < strs.Length; k++) { SQL_str = SQL_str + strs[k].Replace("|", ", ") + " " + types[k]; if (k != strs.Length - 1) { SQL_str += ", "; } } SQL_str += ")\n"; SQL_str += "insert into " + MayBeName + Environment.NewLine; TypesDetected = true; } } else { //вставка значений по полям string Line = Regex.Replace(s, @"\s+", " ").Replace(" ", ""); Line = Line.Substring(1, Line.Length - 2).Trim().Replace(" ", " "); string[] s1 = Line.Split('|'); string sline = ""; for (int t = 0; t < s1.Length; t++) { if (types[t] == "varchar(50)") { sline += "'" + s1[t] + "'"; } else { sline += s1[t]; } if (t != s1.Length - 1) { sline += ", "; } } if (SQL_str.Contains("select ")) { SQL_str += "union all select " + sline + "\n"; } else { SQL_str += "select " + sline + "\n"; } } } } TextBoxSQL.Text = SQL_str; }
private void OutputGraph(Graph G) { if (G == null) { return; } List <string> GraphStrings = new List <string> { String.Format((G.IsOriented ? "Ориентированный Граф. К-во дуг" : "Неориентированный Граф. К-во ребер: ") + " : {0}", G.EdgesNum), "", String.Format((G.IsOriented ? "Дуги: (v1, v2) вес" : "Рёбра: (v1, v2) вес")), "" }; StringBuilder sb = new StringBuilder(); for (int i = 0; i < G.Edges.Count; i++) { sb.Append(String.Format("({0}, {1}) {2}; ", G.Edges[i].v1, G.Edges[i].v2, G.Edges[i].weight)); if (i != 0 && i % 5 == 0) { GraphStrings.Add(sb.ToString()); sb.Clear(); } } if (sb.Length > 0) { GraphStrings.Add(sb.ToString()); } GraphStrings.Add(""); GraphStrings.Add("Матрица смежности(стоимости):"); GraphStrings.AddRange(G.AdjMatrix.GetMatrixStrings(G.VertexNum, G.VertexNum)); if (G.BandwithMatrix != null) { GraphStrings.Add(""); GraphStrings.Add("Матрица пропускных способностей:"); GraphStrings.AddRange(G.BandwithMatrix.GetMatrixStrings(G.VertexNum, G.VertexNum)); } if (G.EulerianMatrix != null) { GraphStrings.Add(""); GraphStrings.Add("Эйлеров вариант графа:"); GraphStrings.AddRange(G.EulerianMatrix.GetMatrixStrings(G.VertexNum, G.VertexNum)); } if (G.HamiltonianMatrix != null) { GraphStrings.Add(""); GraphStrings.Add("Гамильтонов вариант графа:"); GraphStrings.AddRange(G.HamiltonianMatrix.GetMatrixStrings(G.VertexNum, G.VertexNum)); } TextBoxGraph.Text = String.Empty; foreach (string line in GraphStrings) { TextBoxGraph.Text += line + Environment.NewLine; } TextBoxGraph.SelectionStart = TextBoxGraph.TextLength; TextBoxGraph.ScrollToCaret(); }