获取从数据库中的数据为组合框,并将其值C#
问题描述:
美好的一天,我有一个表在我的数据库类获取从数据库中的数据为组合框,并将其值C#
classid | class
1 JSS 1
2 JSS 2
3 JSS 3
4 SSS 1
5 SSS 2
6 SSS 3
在我的组合框,我拿来类列,并将其值设置为类ID,但现在当窗体加载,它只是显示在组合框中留下JSS 2 JSS 1 - SSS 3.
这是我的代码
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; }
}
}
答
你没有一个循环FO [R从数据库中读取值:
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)));
}
+0
非常感谢....保持祝福 – 2014-12-01 19:24:08
答
试试这个: -
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);
}
}
+0
是的..也谢谢你... – 2014-12-01 19:24:36
你得到你的组合框只有一个值??? – yash 2014-11-21 12:38:11
不要我已经解决了它。我用,而不是一会儿。 – 2014-11-21 12:58:29
位代码审查:[use using](http://www.hanselman.com/blog/WhyTheUsingStatementIsBetterThanASharpStickInTheEyeAndASqlConnectionRefactoringExample.aspx);这样你可以转储try/catch。 'm_Display'和'm_Value'应该是私有的。参数应该是camelcase:'AddValue(string display,int value)'。为什么要使用'ArrayList'而不是一个通用的集合,例如'列表'? –
BCdotWEB
2014-11-21 13:00:43