C#SQL查询什么都不返回

时间:2012-05-18 17:20:00

标签: c# sql sql-server-ce

我正在尝试让我的Winforms应用程序查询SQL Server CE数据库,并通过下拉列表返回与用户指定的列名对应的所有行。当我运行程序时,它将只返回一个空白的dataGrid。这是我第一次使用SQL Server CE,所以任何帮助将不胜感激。

我的代码是:

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 个答案:

答案 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);
   }
  }
}

这样,当using语句的范围结束时,表格不会被处理掉。

答案 1 :(得分:0)

如果未在ValueMember中指定属性,则SelectedValue将返回对象的ToString方法的结果。

我的观点是你可能无法从组合框中得到你的想法。

试试这个:

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