C# C:连接无法从DataTable填充控制元素

C# C:连接无法从DataTable填充控制元素,c#,.net,sql-server,datatable,database-connection,C#,.net,Sql Server,Datatable,Database Connection,我正在建立一个SqlServer数据库连接,以便从表中检索数据,并将它们作为文本框和组合框中的输入提供给用户 尽管我没有收到任何异常或错误消息,但结果不是预期的,即使所有数据都返回到表中,两个组合框的行为也不符合预期。 此外,还有两个提到控制装置后面的装置被放在一个图片盒中,所有这些都放在一个面板上 这是我的代码: try { using (SqlConnection con = new SqlConnection(

我正在建立一个SqlServer数据库连接,以便从表中检索数据,并将它们作为文本框和组合框中的输入提供给用户

尽管我没有收到任何异常或错误消息,但结果不是预期的,即使所有数据都返回到表中,两个组合框的行为也不符合预期。 此外,还有两个提到控制装置后面的装置被放在一个图片盒中,所有这些都放在一个面板上

这是我的代码:

            try
            {
                using (SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=SmartCity;Integrated Security=True"))
                {

                    DataTable db = new DataTable();
                    SqlDataAdapter sda = new SqlDataAdapter("SELECT card_type,card_n
                    umber,exp_month,exp_year,cvv FROM CreditCards WHERE user_id='" + ApplicationState.CurrentUser.userid.ToString() + "'", con);
                        sda.Fill(db);

                    //MessageBox Prints the missing data perfectly though!
                    MessageBox.Show("Cart Type:" + db.Rows[0][0].ToString() 
                    + "\nExpiration Month:" + db.Rows[0][2].ToString()); 

                    txtcardholername.Text = ApplicationState.CurrentUser.name + " " + ApplicationState.CurrentUser.surname;
                    cboxcardtype.Text = db.Rows[0][0].ToString();
                    txtcardnumber.Text = db.Rows[0][1].ToString();
                    cboxmonth.Text = db.Rows[0][2].ToString();
                    cboxexpyear.Text = db.Rows[0][3].ToString();
                    txtcvv.Text = db.Rows[0][4].ToString();
                }

            }
            catch (Exception)
            {
                MessageBox.Show("Something went wrong!");
            }

您不会通过设置组合框的文本属性来填充组合框。要正确填充组合框,必须向其中添加项目:

comboBox1.Items.Add(db.Rows[0][0].ToString());
然后你必须选择它,你就会没事了

comboBox1.SelectedItem = comboBox1.Items.Cast<KeyValuePair<string,string>>().First(item=> item.Value == db.Rows[0][0].ToString());
这个小细节就是问题所在:

创建月份组合框时,我添加了以下值:

因此,数据库返回的是-6,而不是-06,这是不正确的 包含在Begging的组合框项目中

然后我更改了如下图所示的值


其他控件是否会填充数据库中的数据,而只有组合框不会填充?是的,初始化为[201620172018….]的控件年份加载得非常完美!这不是问题,问题非常微妙我添加了解决方案检查它,很有趣!