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;
        }
Exemplo n.º 2
0
        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();
        }