Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从数据库填充ComboBox和CheckedListBox,C#_C# - Fatal编程技术网

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

从数据库填充ComboBox和CheckedListBox,C#,c#,C#,好的,正如标题所说,我试图从数据库中填充一个组合框,然后根据组合框中的更改更改checkedlistbox的内容。问题是,我已经尽可能地迷失了方向。我决定使用access数据库(db1.mdb,与exe位于同一目录中)。主数据表Table1包含应该放在组合框中的项的名称(item1、item2、item3)。然后,我对每个值都有单独的表(tableitem1、tableitem2、tableitem3),listbox将一次使用一个,列出“Item Name”字段,每个表中的字段数量不同。在选中

好的,正如标题所说,我试图从数据库中填充一个组合框,然后根据组合框中的更改更改checkedlistbox的内容。问题是,我已经尽可能地迷失了方向。我决定使用access数据库(db1.mdb,与exe位于同一目录中)。主数据表Table1包含应该放在组合框中的项的名称(item1、item2、item3)。然后,我对每个值都有单独的表(tableitem1、tableitem2、tableitem3),listbox将一次使用一个,列出“Item Name”字段,每个表中的字段数量不同。在选中checkedlistbox中的选项后,我需要从与选中列表框关联的数据库表中获取表“value1和value2”中其他列的值。我已经编程5年了,但以前从未需要操作数据库,所以我完全迷路了。

我在这里找到了一些好的代码和建议,阅读了更多的线程。显然,我的主要问题是表名中的空格,所以我删除了表和代码中的空格。此代码用于在combobox和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();
    }

你能再清楚一点吗?根据我目前的理解,您希望在Combobox中获取数据,当有人选择某个内容时,您希望获取其他值并显示为checkboxlist。。您知道如何创建数据集并将其绑定到控件吗??如果没有-我建议先从基础开始。。。做一些简单的事情,然后你可以自己尝试。如果你已经做了5年的编程,你应该知道如何填充组合框等等-也许你应该发布一个问题,只解决数据访问部分?这个问题不会得到很好的答案,因为它太宽泛了。我会澄清。。。所有数据库值都是文本值。数据集正是我感到困惑的地方,我可以使用我之前在这里获得的一些信息轻松地加载组合框,但是从组合框中的名称获取新的数据表让我头疼。我已经用basic编程5年多了,我对c#还是个新手,过去我只做过娱乐性编程,所以我从来不需要建立数据库并从中加载。我试着用值名称和所有内容尽可能地提供信息,但显然失去了清晰度。Sajoshi似乎有我的一般意图。ConnectionString应该类似于“provider=microsoft.jet.oledb.4.0;data source=c:/path/MyDB.mdb”。