C# 从其中一个列名是关键字的表中获取列名

C# 从其中一个列名是关键字的表中获取列名,c#,sql-server,C#,Sql Server,我正在使用c.NETWindows窗体应用程序。我创建了一个包含许多表的数据库。在其中一个表中,我输入了数据。在这个表中,我有4列,分别命名为key、name、age和value。这里,第一列的名称键是一个关键字。现在,我试图将这些列名放入组合框中。我无法获取名称密钥 当我使用此代码时,它适用于键: private void comboseccolumn_SelectedIndexChanged(object sender, EventArgs e) { string dbname =

我正在使用c.NETWindows窗体应用程序。我创建了一个包含许多表的数据库。在其中一个表中,我输入了数据。在这个表中,我有4列,分别命名为key、name、age和value。这里,第一列的名称键是一个关键字。现在,我试图将这些列名放入组合框中。我无法获取名称密钥

当我使用此代码时,它适用于键:

private void comboseccolumn_SelectedIndexChanged(object sender, EventArgs e)
{
    string dbname = combodatabase.SelectedItem.ToString();
    string path = @"Data Source=" + textBox1.Text + ";Initial Catalog=" + dbname + ";Integrated Security=SSPI";
    //string path=@"Data Source=SYED-PC\SQLEXPRESS;Initial Catalog=resources;Integrated Security=SSPI";
    SqlConnection con = new SqlConnection(path);
    string tablename = comboBox2.SelectedItem.ToString();
    //string query= "Select * from" +tablename+;
    //SqlDataAdapter adp = new SqlDataAdapter(" Select [Key] ,value from " + tablename, con);
    SqlDataAdapter adp = new SqlDataAdapter(" Select [" + combofirstcolumn.SelectedItem.ToString() + "]," + comboseccolumn.SelectedItem.ToString() + "\t from " + tablename, con);
    DataTable dt = new DataTable();
    adp.Fill(dt);

    dataGridView1.DataSource = dt;
}

这是因为我在select查询中使用了[但它对非键不起作用。或者如果我删除了[它对键不起作用。请建议我,以便我可以同时获得键和非键列名。

值也是MSSQL中的一个关键字。我原以为您必须将其包装在[]也是。

尝试对键列使用别名


例如:选择键作为关键字,选择值作为关键字值…

仅将它们括在方括号中:

select [key] from tbl
或者,如果希望代码符合ANSI标准,请使用双引号:

select "key" from tbl
如果可行,请尝试以下操作:

SqlDataAdapter adp = new SqlDataAdapter(" Select \"" + combofirstcolumn.SelectedItem.ToString() + "\"," + comboseccolumn.SelectedItem.ToString() + "\t from " + tablename, con);

@巴里,我刚刚运行了SELECT[Key],Value FROM atable,其中包含ske和dvalueas列名,它对我来说运行正常。也许你可以列出你收到的错误消息?没有它,很难确切知道什么不起作用。。