2010-04-29 61 views
0

使用c#.net窗口窗體應用程序的Im。我創建了一個有很多表的數據庫。在其中一個表中,我輸入了數據。在這張表中,我有4列名爲鍵,名稱,年齡,價值。這裏第一列的名稱「關鍵」是一個關鍵詞。現在我試圖將這些列名稱放入組合框中。我無法獲得「鑰匙」的名稱。從列表中獲取列名,其中列名之一是關鍵字

它爲「鑰匙」,當我使用此代碼:

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 [email protected]"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; 
} 

這是怎麼一回事,因爲我使用「[」在選擇查詢。但它不適用於非鑰匙。或者如果我刪除了「[」它不適用於密鑰。請給我建議,以便我可以同時獲得關鍵字和非關鍵字列名。

+0

也許你可以列出你收到的錯誤信息?沒有這個,很難確切地知道什麼是不工作.. – Rob 2010-04-29 09:41:37

+0

請發佈確切的錯誤 – 2010-04-29 09:45:47

回答

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); 
0

Value也是MSSQL中的關鍵字。我會認爲你也必須在[]中包裝這個。

+0

@Barry,我剛剛運行'SELECT [Key],值從ATableThatContainsKeyAndValueAsColumnNames',它的工作沒有錯誤,我.. – Rob 2010-04-29 09:40:19

0

嘗試使用Alias作爲「密鑰」列。

對於例如:選擇Key作爲關鍵字,值KeywordValue ...