1

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

2 に答える 2

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 ステートメントのスコープが終了したときにテーブルが破棄されることはありません。

于 2012-05-18T18:48:31.913 に答える
0

ValueMember でプロパティが指定されていない場合、SelectedValue はオブジェクトの ToString メソッドの結果を返します。

私のポイントは、comboBox からあなたが考えていることを得られないかもしれないということです。

これを試して:

string queryString = ("SELECT * FROM SecondaryEducation WHERE ProgramCode='" + PrgmCde.Items[PrgmCde.SelectedIndex].ToString() + "'");
于 2012-05-18T19:02:04.520 に答える