从表中获取列名称,其中列名称之一是关键字

时间:2010-04-29 09:26:00

标签: c# sql-server

我正在使用c#.net windows表单应用程序。我创建了一个包含许多表的数据库。在其中一个表中,我输入了数据。在这个表中,我有4列名为key,name,age,value。这里第一列的名称“key”是关键字。现在我试图将这些列名称放入组合框中。我无法得到“钥匙”这个名字。

当我使用此代码时,它适用于“密钥”:

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;
}

这是因为我在选择查询中使用“[”。但它不适用于非钥匙。或者如果我删除“[”它不适用于密钥。请建议我,以便我可以获得关键和非关键列名称。

3 个答案:

答案 0 :(得分:0)

Value也是MSSQL中的关键字。我原本以为你必须将它包装在[]中。

答案 1 :(得分:0)

尝试将Alias用于“密钥”列。

对于例如:选择键作为关键字,值为KeywordValue ...

答案 2 :(得分:0)

将它们括在方括号中:

select [key] from tbl

或者如果您希望您的代码符合ANSI标准,请使用双引号:

select "key" from tbl

如果这样可以尝试:

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