Example #1
0
        public void AnonymousColumnsAreHandledCorrectly()
        {
            var resultSet = new FlexResultSet();
            var result    = new FlexResult();

            result.schema = new List <SQLColumn>()
            {
                new SQLColumn()
                {
                    ColumnName = "", DataType = "varchar"
                },
                new SQLColumn()
                {
                    ColumnName = "", DataType = "int"
                }
            };
            result.data = new List <object[]>();
            resultSet.results.Add(result);

            var srp = new SqlRunParameters(new SqlConnectionStringBuilder(), SqlRunParameters.TO_CSHARP, "");

            CSharpRenderer.renderAsCSharp(resultSet, srp);
            var expected = @"public class Result0
{
    public string anonymousProperty { get; set; }
    public int anonymousProperty_2 { get; set; }
}
";

            Assert.AreEqual(srp.resultsText.ToString(), expected);
        }
Example #2
0
        public void handle_duplicate_column_names()
        {
            var resultSet = new FlexResultSet();
            var result    = new FlexResult();

            result.schema = new List <SQLColumn>()
            {
                new SQLColumn()
                {
                    ColumnName = "testa", DataType = "int"
                },
                new SQLColumn()
                {
                    ColumnName = "testa", DataType = "varchar"
                }
            };
            result.data = new List <object[]>();
            resultSet.results.Add(result);

            var srp = new SqlRunParameters(new SqlConnectionStringBuilder(), SqlRunParameters.TO_CSHARP, "");

            CSharpRenderer.renderAsCSharp(resultSet, srp);
            var expected = @"public class Result0
{
    public int testa { get; set; }
    public string testa_2 { get; set; }
}
";

            Assert.AreEqual(srp.resultsText.ToString(), expected);
        }
Example #3
0
        private void TryToSaveCSVs(SqlRunParameters srp)
        {
            txtOutput.Text = "";
            string personalFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            string timestamp      = DateTime.Now.ToString("_yyyyMMddTHHmmss");

            for (int csvIndex = 0; csvIndex < srp.outputFiles.Count; csvIndex += 1)
            {
                string fileName = "";
                try
                {
                    fileName = Path.Combine(personalFolder, "TSqlFlex" + timestamp +
                                            (srp.outputFiles.Count > 1 ? "_" + (csvIndex + 1).ToString() : "") + ".csv");
                }
                catch (Exception ex)
                {
                    string error = "Exception when attempting to find personal documents folder for current user.  Will not save file.";
                    logger.Log(error + " " + ex.Message);
                    logger.Log(ex.StackTrace);
                    MessageBox.Show(error + "  " + ex.Message);
                    fileName = "";
                    break;
                }

                if (fileName != "")
                {
                    srp.saveOutputStreamTo(srp.outputFiles[csvIndex], fileName);
                    this.lastExportedFilePath = fileName;
                    InvokeFireAndForgetOnFormThread(() =>
                    {
                        txtOutput.Text += "--Results written to \"" + fileName + "\".\r\n--You can open this file in your text editor.\r\n\r\n";
                    });
                }
            }
        }
Example #4
0
        public void EscapedNamesLeadingToACollisionAreHandledCorrectly()
        {
            var resultSet = new FlexResultSet();
            var result    = new FlexResult();

            result.schema = new List <SQLColumn>()
            {
                new SQLColumn()
                {
                    ColumnName = "test_1", DataType = "varchar"
                },
                new SQLColumn()
                {
                    ColumnName = "test?1", DataType = "varchar"
                }
            };
            result.data = new List <object[]>();
            resultSet.results.Add(result);

            var srp = new SqlRunParameters(new SqlConnectionStringBuilder(), SqlRunParameters.TO_CSHARP, "");

            CSharpRenderer.renderAsCSharp(resultSet, srp);
            var expected = @"public class Result0
{
    public string test_1 { get; set; }
    public string test_1_2 { get; set; }
}
";

            Assert.AreEqual(srp.resultsText.ToString(), expected);
        }
Example #5
0
        private void TryToSaveSpreadsheet(SqlRunParameters srp)
        {
            string fileName = "";

            try
            {
                fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "TSqlFlex" + DateTime.Now.ToString("_yyyyMMddTHHmmss") + ".xml");
            }
            catch (Exception ex)
            {
                string error = "Exception when attempting to find personal documents folder for current user.  Will not save file.";
                logger.Log(error + " " + ex.Message);
                logger.Log(ex.StackTrace);
                MessageBox.Show(error + "  " + ex.Message);
                fileName = "";
            }

            if (fileName != "")
            {
                srp.saveOutputStreamTo(srp.outputFiles[0], fileName);
                this.lastExportedFilePath = fileName;
                InvokeFireAndForgetOnFormThread(() =>
                {
                    txtOutput.Text = "--Results written to \"" + fileName + "\".\r\n--You can open this file in Excel.\r\n\r\n";
                });
            }
        }
Example #6
0
        private void cmdRunNRollback_Click(object sender, EventArgs e)
        {
            if (!Utils.IsValidConnectionStringBuilder(connStringBuilder))
            {
                MessageBox.Show("Select the target database in the object tree first.");
                return;
            }

            if (!queryWorker.IsBusy)
            {
                lastExportedFilePath = "";
                sqlStopwatch         = new Stopwatch();
                sqlStopwatch.Start();
                queryTimer.Enabled = true;
                setUIState(true);

                try
                {
                    var srp = new SqlRunParameters(connStringBuilder, getSqlToRun(), cmbResultsType.SelectedItem.ToString());
                    srp.completedResultsCount = completedResultsCount;
                    queryWorker.RunWorkerAsync(srp);
                }
                catch (Exception ex)
                {
                    string error = "There was an exception when setting up the query run parameters.  " + ex.Message;
                    logger.Log(error + " " + ex.StackTrace);
                    MessageBox.Show(error);
                    sqlStopwatch.Stop();
                    queryTimer.Enabled = false;
                    setUIState(false);
                }
            }
        }
Example #7
0
 private void RenderXmlSpreadsheet(SqlRunParameters srp)
 {
     if (srp.worksheetIsValid)
     {
         TryToSaveSpreadsheet(srp);
     }
     else
     {
         drawExceptions(srp);
     }
 }
Example #8
0
 private void RenderCsv(SqlRunParameters srp)
 {
     if (srp.worksheetIsValid)
     {
         TryToSaveCSVs(srp);
     }
     else
     {
         drawExceptions(srp);
     }
 }
Example #9
0
 private void drawExceptions(SqlRunParameters srp, string header = "")
 {
     InvokeFireAndForgetOnFormThread(() => {
         if (header == "")
         {
             txtOutput.Text = srp.exceptionsText.ToString();
         }
         else
         {
             txtOutput.Text = header + "\r\n\r\n" + srp.exceptionsText.ToString();
         }
     });
 }
Example #10
0
        public void RenderingTimeField_RendersCorrectly()
        {
            var frs = new FlexResultSet();

            var dt = new List <SQLColumn>()
            {
                SchemaScriptingTests.FakeColumn("ColIntNotNull", "MyStuff", 32, "int", false, 255, 255),
                SchemaScriptingTests.FakeColumn("ColIntNull", "MyStuff", 32, "int", true, 255, 255),
                SchemaScriptingTests.FakeColumn("ColTimeOfDay", "MyStuff", 32, "time", true, 255, 255)
            };

            var result = new FlexResult()
            {
                schema = dt,
                data   = new List <object[]>()
                {
                    new object[] { 99, 111, new TimeSpan(0, 00, 00, 00, 001) },
                    new object[] { 42, null, new TimeSpan(23, 59, 30) },
                }
            };

            frs.results.Add(result);

            var tempFileName = Guid.NewGuid().ToString() + ".txt";

            var srp = new SqlRunParameters(new SqlConnectionStringBuilder(), "", SqlRunParameters.TO_XML_SPREADSHEET, tempFileName);

            XmlSpreadsheetRenderer.renderAsXMLSpreadsheet(frs, srp);

            var xmlSpreadsheetContent = srp.getOutputStreamAsString(tempFileName);

            Assert.IsTrue(xmlSpreadsheetContent.Length > 1000, "expected more than 1000 characters of output");

            Assert.IsTrue(xmlSpreadsheetContent.Contains(">99<"));
            Assert.IsTrue(xmlSpreadsheetContent.Contains(">111<"));
            Assert.IsTrue(xmlSpreadsheetContent.Contains(">1899-12-31T00:00:00.001<"));
            Assert.IsTrue(xmlSpreadsheetContent.Contains(">42<"));
            Assert.IsTrue(xmlSpreadsheetContent.Contains(">1899-12-31T23:59:30.000<"));

            XmlDocument doc = null;

            Assert.DoesNotThrow(() => {
                doc = new XmlDocument();
                doc.LoadXml(xmlSpreadsheetContent);
            }, "expected no exception");

            Assert.IsNotNull(doc, "expected valid XML");
        }
Example #11
0
        private void RenderInsertStatements(SqlRunParameters srp)
        {
            bool success = false;

            try
            {
                if (srp.exceptionsText.Length > 0)
                {
                    if (srp.resultsText.Length > 0)
                    {
                        txtOutput.Text = srp.exceptionsText.ToString() + "\r\n\r\n" + srp.resultsText.ToString();
                        success        = true;
                    }
                    else
                    {
                        drawExceptions(srp);
                        success = true;
                    }
                }
                else
                {
                    txtOutput.Text = srp.resultsText.ToString();
                    success        = true;
                }
            }
            catch (Exception ex)
            {
                srp.resultsText = null;
                srp.exceptionsText.Append("\r\n\r\n/*\r\n\r\nException while attempting to display results: ");
                srp.exceptionsText.Append(ex.Message);
                srp.exceptionsText.Append("\r\n\r\n");
                srp.exceptionsText.Append(ex.StackTrace);
                srp.exceptionsText.Append("\r\n*/");
            }

            if (!success)
            {
                GC.Collect();
                txtOutput.Text = srp.exceptionsText.ToString();
            }
        }
Example #12
0
        public void EscapedNamesLeadingToACollisionAreHandledCorrectly()
        {
            var resultSet = new FlexResultSet();
            var result = new FlexResult();
            result.schema = new List<SQLColumn>() {
                new SQLColumn() { ColumnName = "test_1", DataType = "varchar" },
                new SQLColumn() { ColumnName = "test?1", DataType = "varchar" }
            };
            result.data = new List<object[]>();
            resultSet.results.Add(result);

            var srp = new SqlRunParameters(new SqlConnectionStringBuilder(), SqlRunParameters.TO_CSHARP, "");
            CSharpRenderer.renderAsCSharp(resultSet, srp);
            var expected = @"public class Result0
            {
            public string test_1 { get; set; }
            public string test_1_2 { get; set; }
            }
            ";
            Assert.AreEqual(srp.resultsText.ToString(), expected);
        }
Example #13
0
        public void AnonymousColumnsAreHandledCorrectly()
        {
            var resultSet = new FlexResultSet();
            var result = new FlexResult();
            result.schema = new List<SQLColumn>() {
                new SQLColumn() { ColumnName = "", DataType = "varchar" },
                new SQLColumn() { ColumnName = "", DataType = "int" }
            };
            result.data = new List<object[]>();
            resultSet.results.Add(result);

            var srp = new SqlRunParameters(new SqlConnectionStringBuilder(), SqlRunParameters.TO_CSHARP, "");
            CSharpRenderer.renderAsCSharp(resultSet, srp);
            var expected = @"public class Result0
            {
            public string anonymousProperty { get; set; }
            public int anonymousProperty_2 { get; set; }
            }
            ";
            Assert.AreEqual(srp.resultsText.ToString(), expected);
        }
Example #14
0
        public void NullabilityWorksCorrectly()
        {
            var resultSet = new FlexResultSet();
            var result    = new FlexResult();

            result.schema = new List <SQLColumn>()
            {
                new SQLColumn()
                {
                    ColumnName = "a", DataType = "varchar", AllowNulls = true
                },
                new SQLColumn()
                {
                    ColumnName = "b", DataType = "int", AllowNulls = true
                },
                new SQLColumn()
                {
                    ColumnName = "c", DataType = "smalldatetime", AllowNulls = true
                }
            };
            result.data = new List <object[]>();
            resultSet.results.Add(result);

            var srp = new SqlRunParameters(new SqlConnectionStringBuilder(), SqlRunParameters.TO_CSHARP, "");

            CSharpRenderer.renderAsCSharp(resultSet, srp);
            var expected = @"public class Result0
{
    public string a { get; set; }
    public int? b { get; set; }
    public DateTime? c { get; set; }
}
";

            Assert.AreEqual(expected, srp.resultsText.ToString());
        }
Example #15
0
        public void handle_duplicate_column_names()
        {
            var resultSet = new FlexResultSet();
            var result = new FlexResult();
            result.schema = new List<SQLColumn>() {
                new SQLColumn() { ColumnName = "testa", DataType = "int" },
                new SQLColumn() { ColumnName = "testa", DataType = "varchar" }
            };
            result.data = new List<object[]>();
            resultSet.results.Add(result);

            var srp = new SqlRunParameters(new SqlConnectionStringBuilder(), SqlRunParameters.TO_CSHARP, "");
            CSharpRenderer.renderAsCSharp(resultSet, srp);
            var expected = @"public class Result0
            {
            public int testa { get; set; }
            public string testa_2 { get; set; }
            }
            ";
            Assert.AreEqual(srp.resultsText.ToString(), expected);
        }