2012-05-18 99 views
1

我想讓我的Winforms應用程序查詢SQL Server CE數據庫,並返回與用戶通過下拉列表指定的列名相對應的所有行。當我運行程序時,它將返回一個空白的dataGrid。這是我第一次使用SQL Server CE,所以任何幫助,將不勝感激。C#SQL查詢什麼也沒有返回

我的代碼是:

private void srchBTN_Click(object sender, EventArgs e) 
{ 
    string conString = Properties.Settings.Default.CurricularChangeTrackerConnectionString; 

    using (SqlCeConnection conn = new SqlCeConnection(conString)) 
    { 
     string queryString = ("SELECT * FROM SecondaryEducation WHERE ProgramCode='" + PrgmCde.SelectedValue + "'"); 

     try 
     { 
      conn.Open(); 

      using (SqlCeDataAdapter adapter = new SqlCeDataAdapter(queryString, conn)) 
      { 
       DataTable table = new DataTable(); 
       adapter.Fill(table); 

       dataGridView1.DataSource = table; 
       adapter.Dispose(); 
      } 

      conn.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
} 
+2

發生(例如,通過在調試器設置斷點)什麼,然後直接使用SQL Server Management Studio中運行該查詢針對數據庫? –

+2

你可以在這一行中斷點dataGridView1.DataSource = table;並確保表中填充了一些東西? –

+1

當你說「空白」datagrid時,它是否至少有列?如果是這樣,那麼你的查詢返回正常,但你沒有數據符合你的標準! – banging

回答

0

如果在ValueMember中未指定屬性,則SelectedValue將返回對象的ToString方法的結果。

我的觀點是你可能沒有從你的組合框中得到什麼。

試試這個:當你得到你的查詢是在`queryString`

string queryString = ("SELECT * FROM SecondaryEducation WHERE ProgramCode='" + PrgmCde.Items[PrgmCde.SelectedIndex].ToString() + "'"); 
+0

謝謝,這工作完美。 –

0

您在聲明using語句裏面的數據表,試試這個

private void srchBTN_Click(object sender, EventArgs e) 
{ 
    string conString = Properties.Settings.Default.CurricularChangeTrackerConnectionString; 
    DataTable table = new DataTable(); 
    using (SqlCeConnection conn = new SqlCeConnection(conString)) 
    { 
    string queryString = ("SELECT * FROM SecondaryEducation WHERE ProgramCode='" + PrgmCde.SelectedValue + "'"); 

    try 
    { 
     conn.Open(); 

     using (SqlCeDataAdapter adapter = new SqlCeDataAdapter(queryString, conn)) 
     { 

      adapter.Fill(table); 
      dataGridView1.DataSource = table; 
      adapter.Dispose(); 
     } 

     conn.Close(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    } 
} 

這樣的表不會被處置時,使用的語句的範圍結束。