格式化包含双引号的长SQL字符串

时间:2020-08-12 10:46:18

标签: c# sql winforms

我有一个winform应用程序,该应用程序作为数据源连接到Access数据库,因为我不能像Mysql那样使用存储过程,我正拼命尝试执行查询并将其填充到数据网格视图框中。(之前我希望在访问数据库查询中使用相同的Excel) 但是再次让我震惊的是如何以正确的格式输入这个长SQL,请帮助我如何在我的代码中封装这个SQL字符串。

private void FormMainMenu_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'cSCDataSet.master_table' table. You can move, or remove it, as needed.
            this.master_tableTableAdapter.Fill(this.cSCDataSet.master_table);
            dataGridView1.DataSource = Read();
        }

        private readonly OleDbConnectionStringBuilder _builder = new OleDbConnectionStringBuilder
        {
            Provider = "Microsoft.ACE.OLEDB.12.0",
            DataSource = "S:\\Customer_Service\\Wires\\Database for CSC\\Backend data of databse do not open\\CSC.accdb"
        };

        public DataTable Read()
        {
            var dt = new DataTable();

            using (var cn = new OleDbConnection { ConnectionString = _builder.ConnectionString })
            {

                using (var cmd = new OleDbCommand { Connection = cn })
                {
                    cmd.CommandText = @"TRANSFORM Count(Complaint_Number) AS [Total Numbers]
                                       SELECT Nature_of_problem, Count(Complaint_Number) AS[Total Numbers of Issues]
                                       FROM master_table
                                       GROUP BY Nature_of_problem
                                       PIVOT Format(Complaint_Received_On, "mmm") In("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); 
                    cn.Open();
                    dt.Load(cmd.ExecuteReader());
                }
            }

            return dt;

        }
    }
}

2 个答案:

答案 0 :(得分:1)

您将双引号加倍。""

Working Solution

答案 1 :(得分:0)

显然您的问题与Winforms无关。

只是我不知道如何格式化它以包括双引号

在SQL字符串中,引号用单引号引起,例如this example from SQL IN operator

Date

因此,如果您需要在c#字符串中使用以下命令文本:

SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');