4

ここに画像の説明を入力

私はしばらくの間、この基本的なフォームに取り組んできましたが、最新のつまずきにぶつかりました。テキスト ボックスに ID を入力し、[ロード] ボタンをクリックして.jpgこれを選択すると、上部の画像ボックスに画像が表示されます (この例ではカムコーダー)。

問題は、Saveボタンをクリックすると、という名前のメソッドが呼び出されることです。updatedata();

これは、イメージと ID を SQL Server CE データベースに書き込んでいると思います (bin\debug フォルダーで数回実行しましたが、db のサイズが大きくなりました)。このメソッドは、次の名前の別のメソッドも呼び出します。Connection();

さて、接続方法の考え方は、データベースに保存されたアイテムに基づいて ID コンボボックスを設定することです。そのため、基本的に新しい画像を追加するたびに、ピックリストが更新され、選択できるようになりますが、現在はそうではありません私が使用したコードは、CE ではなく、SQL Server の適切なインスタンス用に最初に作成されたためです。一部をリファクタリングしようとしましたが、現在、以下のエラーが発生しています。

ここに画像の説明を入力

私の接続方法のコードは次のとおりです。

private void Connection() 
{   
          //connect to the database and table
          //selecting all the columns
          //adding the name column alone to the combobox 

         try 
         {
             string connstr = @"Data Source=.\TestImage.sdf;Persist Security Info=False;"; 

             SqlCeConnection conn = new SqlCeConnection(connstr);  
             conn.Open();
             empadap1 = new SqlDataAdapter();   
             empadap1.SelectCommand = new SqlCommand("SELECT * FROM test_table"
                 , conn); 
             dset = new DataSet("dset");
             empadap1.Fill(dset);   
             DataTable dtable;     
             dtable = dset.Tables[0];
             comboBox1.Items.Clear(); 
             foreach (DataRow drow in dtable.Rows)
             { 
              comboBox1.Items.Add(drow[0].ToString()); 
              comboBox1.SelectedIndex = 0; 
             } 
         }
         catch (Exception ex)
         {
          MessageBox.Show(ex.Message);    
         }   
}

質問
Connection() メソッド コードを修正して、希望どおりにする (つまり、SQL Server CE データベース内に保存されているすべての ID でコンボボックスを更新する) か、新しいコードを提案してください。

サイドノート
コンボボックスにデータが入力されたら、選択した ID に基づいて「取得」ボタンをコーディングしようとします。これにより、選択した画像が最初の画像ボックスの下の 2 番目の画像ボックスに表示されますが、別の画像ボックスに保存するのが最善だと思います。問題!

4

3 に答える 3

1

SqlCeDataAdapterandSqlCeCommandの代わりにSqlDataAdapterand を試してくださいSqlCommand

于 2013-06-12T18:33:33.617 に答える
0

これを試して

    private void Connection() 
{   
          //connect to the database and table
          //selecting all the columns
          //adding the name column alone to the combobox 

         try 
         {
             string connstr = @"Data Source=.\TestImage.sdf;Persist Security Info=False;"; 

             SqlCeConnection conn = new SqlCeConnection(connstr);  
             conn.Open();
             SqlCeCommand selectCmd = conn.CreateCommand();
             selectCmd.CommandText = "SELECT * FROM test_table";
             SqlCeDataAdapter adp = new SqlCeDataAdapter(selectCmd);              
             dset = new DataSet("dset");
             adp.Fill(dset);   
             DataTable dtable;     
             dtable = dset.Tables[0];
             if(comboBox1.Items.Count>0)
             {
                comboBox1.Items.Clear(); 
             }
             foreach (DataRow drow in dtable.Rows)
             { 
                comboBox1.Items.Add(drow[0].ToString());                
             } 
             comboBox1.SelectedIndex = 0; 
         }
         catch (Exception ex)
         {
          MessageBox.Show(ex.Message);    
         }   
         finally
         {
            conn.Open();
         }
}
于 2013-06-21T07:24:18.503 に答える
0

同じ質問がありました(リフレッシュについて)。私は1つの方法を見つけましたが、うまくいきません。単に

public ButtonSave_Click(...)
{
    Connection();
    Application.Restart();
}

私にはそれで十分でしたが、それがあなたに役立つかどうかはわかりません...

于 2013-06-20T05:55:02.290 に答える