C# 将数据库中的数据提取到组合框及其值C中#
你好,我的数据库课上有一张桌子 在我的组合框中,我获取了class列并将其值设置为class id,但是现在当表单加载时,它只在组合框中显示JSS1,留下JSS2-SSS3 这是我的密码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
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);
}
}