从数据库中填充ComboBox和CheckedListBox,C#

时间:2011-04-06 05:26:44

标签: c#

好吧,正如标题所说,我正在尝试从数据库填充组合框,然后根据组合框中的更改更改checkedlistbox的内容。这里的问题是,我尽可能地迷失方向。我决定使用访问数据库(db1.mdb,与exe相同的目录)。主数据表Table1具有应该放在组合框中的项目的名称(item1,item2,item3)。然后,我为每个值(tableitem1,tableitem2,tableitem3)都有单独的表,并且列表框将一次使用这些表,列出“项目名称”字段,其中每个表中的金额各不相同。检查checkedlistbox中的选项后,我需要从与选中列表框关联的数据库表中获取该表中“value1和value2”中其他列的值。我已经编程了大约5年,但之前从未需要操作数据库,所以我完全迷失了。

1 个答案:

答案 0 :(得分:0)

我在这里找到了一些很好的代码和建议。显然我的主要问题是表名中的间距,所以我删除了表和代码中的空格。此代码用于在组合框和checkedlistbox中加载适当的值。现在,我只需要从对应于已检查列表的行中加载值,并将来自2个不同列的值加载到2个不同的字符串数组中。这是我第一次使用数据库,所以我只是迷失了系统如何解释我写的内容。

    private OleDbConnection myConn;
    private OleDbDataAdapter dAdapter;
    private DataViewManager dviewmanager;
    private DataSet dset;

    private OleDbConnection myConn2;
    private OleDbDataAdapter dAdapter2;
    private DataViewManager dviewmanager2;
    private DataSet dset2;

    private void cmbDatabaseFill()
    {
        string conStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=DB1.mdb";
        try
        {
            myConn = new OleDbConnection(conStr);
            myConn.Open();
        }
        catch (OleDbException ex)
        {
            MessageBox.Show("Error in connection ..." + ex.Message);
        }

        string sqlStr = "SELECT * FROM Index;";

        dAdapter = new OleDbDataAdapter(sqlStr, myConn);

        dset = new DataSet();

        dAdapter.TableMappings.Add("Table", "Index");

        dAdapter.Fill(dset);

        this.dviewmanager = dset.DefaultViewManager;

        this.cmbMain.DataSource = this.dviewmanager;

        this.cmbMain.DisplayMember = "Index.List";

        this.myConn.Close();
    }

    private void cmbMain_SelectedIndexChanged(object sender, EventArgs e)
    {
        clbDatabaseFill();
    }

    private void clbDatabaseFill()
    {
        string newTableName = cmbMain.Text.Replace(" ", "");

        string conStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=DB1.mdb";
        try
        {
            myConn2 = new OleDbConnection(conStr);
            myConn2.Open();
        }
        catch (OleDbException ex)
        {
            MessageBox.Show("Error in connection ..." + ex.Message);
        }

        string sqlStr = "SELECT * FROM " + newTableName + ";";

        dAdapter2 = new OleDbDataAdapter(sqlStr, myConn2);

        dset2 = new DataSet();

        dAdapter2.TableMappings.Add("Table", newTableName);

        try
        {
            dAdapter2.Fill(dset2);
        }
        catch (System.Exception)
        {
            return;
        }

        this.dviewmanager2 = dset2.DefaultViewManager;

        this.clbOpt.DataSource = this.dviewmanager2;

        this.clbOpt.DisplayMember = newTableName + ".ValName";

        this.myConn2.Close();
    }