使用从SQL Server CE表中获取的值填充组合框

时间:2013-06-12 18:27:54

标签: c# .net sql-server-ce

enter image description here

我已经在这个基本表格上工作了一段时间,并且遇到了我最新的绊脚石。 到目前为止的工作原理如下:在文本框中输入ID,单击“加载”按钮,选择.jpg,然后在顶部的图片框中显示图像(在本例中为摄像机)。

现在针对此问题,当您点击Save按钮时,它会调用名为updatedata();的方法

我相信这是将图像和ID写入我的SQL Server CE数据库(我已经在bin \ debug文件夹中完成了几次,并且db的大小已经增大。)该方法还调用了另一种方法名为Connection();

现在,连接方法的想法是根据已保存到数据库的任何项目填充ID组合框,因此基本上每次添加新图像时,选项列表都应刷新并可供选择,目前它没有做任何事情,因为我使用的代码最初是为适当的SQL Server实例编写的,而不是CE。我试图重构其中一些但是我现在得到以下错误。

enter image description here

以下是我的连接方法的代码:

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对“检索”按钮进行编码,然后将在第一个图片框下方的第二个图片框中显示所选图像,但我认为最好是保留一个单独的问题!

3 个答案:

答案 0 :(得分:1)

尝试SqlCeDataAdapterSqlCeCommand代替SqlDataAdapterSqlCommand

答案 1 :(得分:0)

我有同样的问题(关于刷新)。我找到了一种方法,不是很好但是有效。 简单地

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

这对我来说已经足够了,但我不知道它会对你有所帮助......

答案 2 :(得分: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();
         }
}