Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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
C# 将数据库中的数据提取到组合框及其值C中#_C#_Windows - Fatal编程技术网

C# 将数据库中的数据提取到组合框及其值C中#

C# 将数据库中的数据提取到组合框及其值C中#,c#,windows,C#,Windows,你好,我的数据库课上有一张桌子 在我的组合框中,我获取了class列并将其值设置为class id,但是现在当表单加载时,它只在组合框中显示JSS1,留下JSS2-SSS3 这是我的密码 SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Solutions\Desktop\My Work\ExamProject\Project DataBase File For E

你好,我的数据库课上有一张桌子

在我的组合框中,我获取了class列并将其值设置为class id,但是现在当表单加载时,它只在组合框中显示JSS1,留下JSS2-SSS3

这是我的密码

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Solutions\Desktop\My Work\ExamProject\Project DataBase File For Exam\EExamDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
bool classHaveBeenAdded = false;

void ClassCombo()       
        try
        {
            con = new SqlConnection(Properties.Settings.Default.MyConnection);
            cmd = new SqlCommand("SELECT * FROM Classes", con);
            cmd.Connection.Open();
            SqlDataReader readClass = cmd.ExecuteReader();
            ArrayList ClassList = new ArrayList();
            if (readClass.Read())
            {
                ClassList.Add(new AddValue(readClass.GetString(1), readClass.GetInt32(0)));
            }
            readClass.Close();
            cmd.Connection.Close();

            this.comboBoxClassID.DataSource = ClassList;
            this.comboBoxClassID.DisplayMember = "Display";
            this.comboBoxClassID.ValueMember = "Value";
            classHaveBeenAdded = true;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    public class AddValue
    {
        public string m_Display;
        public int m_Value;

        public AddValue(string Display, int Value)
        {
            m_Display = Display;
            m_Value = Value;
        }

        public string Display
        {
            get { return m_Display; }
        }

        public int Value
        {
            get { return m_Value; }
        }
    }

您没有从数据库读取值的循环:

if (readClass.Read())
{
    ClassList.Add(new AddValue(readClass.GetString(1), readClass.GetInt32(0)));
}
应该是:

while (readClass.Read())
{
    ClassList.Add(new AddValue(readClass.GetString(1), readClass.GetInt32(0)));
}
试试这个:-

   void ClassCombo()       
    try
    {
        con = new SqlConnection(Properties.Settings.Default.MyConnection);
        cmd = new SqlCommand("SELECT * FROM Classes", con);
        cmd.Connection.Open();
        SqlDataReader readClass = cmd.ExecuteReader();
        ArrayList ClassList = new ArrayList();
        int i=0;
        while (readClass.Read())
        {
            ClassList.Add(readClass["class"].ToString());
            i++;
        }
        readClass.Close();
        cmd.Connection.Close();

        this.comboBoxClassID.DataSource = ClassList;
        this.comboBoxClassID.DisplayMember = "Display";
        this.comboBoxClassID.ValueMember = "Value";
        classHaveBeenAdded = true;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

您的组合框中只有一个值???我没有解决它。我用if代替了一段时间;这样你就可以放弃尝试/捕获
m_显示
m_值
应该是私有的。参数大小写应为:
AddValue(字符串显示,int值)
。为什么使用
ArrayList
而不是通用集合,例如
List
   void ClassCombo()       
    try
    {
        con = new SqlConnection(Properties.Settings.Default.MyConnection);
        cmd = new SqlCommand("SELECT * FROM Classes", con);
        cmd.Connection.Open();
        SqlDataReader readClass = cmd.ExecuteReader();
        ArrayList ClassList = new ArrayList();
        int i=0;
        while (readClass.Read())
        {
            ClassList.Add(readClass["class"].ToString());
            i++;
        }
        readClass.Close();
        cmd.Connection.Close();

        this.comboBoxClassID.DataSource = ClassList;
        this.comboBoxClassID.DisplayMember = "Display";
        this.comboBoxClassID.ValueMember = "Value";
        classHaveBeenAdded = true;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}