我有一个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;
}
}
}
答案 0 :(得分:1)
您将双引号加倍。""
答案 1 :(得分:0)
显然您的问题与Winforms无关。
只是我不知道如何格式化它以包括双引号
在SQL字符串中,引号用单引号引起,例如this example from SQL IN operator
Date
因此,如果您需要在c#字符串中使用以下命令文本:
SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');