2013-09-11 33 views
0

我正在使用C#與我擁有的Access數據庫進行鏈接。我通過在VS中使用數據源配置嚮導添加了這個數據庫,現在我嘗試運行一些查詢。從SQL查詢引用控件

這是我遇到問題的查詢,我認爲它有一個問題,試圖從查詢內引用一個組合框。

SELECT DISTINCT Column2 
FROM   MyTable 
WHERE   Column1 = cboMyComboBox.Text 
ORDER BY  Column2 

數據在MyTable的

Column1  Column2 
Male  Bob 
Female  Jane 
Male  Jim 
Male  John 
Female  Jill 

而且可以說在cboMyComboBox值的樣本「男」

我試圖讓查詢返回「鮑勃」, 'Jim'and'John'

我對此很新,所以我可能錯過了一些完全明顯的東西,並隨時向我推薦任何正確執行此操作的指南。 (它可能有一些做參數...?我是否需要被路過的東西,這個查詢?)

我收到的錯誤是

+0

什麼問題,你有你的查詢。我看起來很合理。 –

+0

剛剛編輯時出現錯誤 - 「沒有給出一個或多個必需參數的值」 – user2408171

+0

您正在使用c#訪問數據庫,但是您要在sql字符串中發送cboMyComboBox.Text?這不是可以編譯的東西。也許你可以發佈實際的代碼? – paqogomez

回答

1
「沒有爲一個或多個必需的參數給定值」
string query = String.Format(
       @"SELECT DISTINCT Column2 FROM MyTable 
        WHERE Column1 = '{0}' ORDER Y Column2", cboMyComboBox.Text); 

否則,sql查詢會嘗試將字段1與字符串cboMyComboBox.Text字面匹配,而不是其中的數據。

在完整的形式:

public DataTable dattab; 
public void GetData() 
{ 
    //setup the parameters for connecting 
    string connString = @"";// You need to define you connection string here. 
    string query = String.Format(@"SELECT DISTINCT Column2 FROM MyTable WHERE Column1 = '{0}' ORDER Y Column2", cboMyComboBox.Text); 

    //Create the connection and commmand objects, then open a connection to the DB. 
    SqlConnection conn = new SqlConnection(connString);   
    SqlCommand cmd = new SqlCommand(query, conn); 
    conn.Open(); 

    //Retrieve the data and fill the datatable 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(dattab); 

    //Close off connections 
    conn.Close(); 
    da.Dispose(); 
} 
+0

我很確定這是正確的軌道 - 你知道嗎?用tableadapter查詢來做到這一點? – user2408171

0

想通了 - 在查詢屬性存在添加參數的選擇 - 我可以在這裏添加它,然後通過組合框的值,當我跑的查詢方法:

tableAdapter.GetColumn1Data(cboMyComboBox.Text) 

Table Adapter