我使用以下方法从数据库加载数据并填入我的组合框。例如,如果我的数据库表如下:
表名:人
Person_Id Person_Name
1 Jason
2 Carl
Jason和Carl的名字将被加载到组合框中。这很好用。我现在想要加载我的组合框只有列名,如Person_ID,Person_Name。有没有办法可以修改我当前的方法来做到这一点?请指教。
private void fillCombo(string query, string name, ComboBox c)
{
MySqlCommand cmdReader;
MySqlDataReader myReader;
try
{
cmdReader = new MySqlCommand(query, conn);
myReader = cmdReader.ExecuteReader();
while (myReader.Read())
{
string temp;
if (name != null)
{
temp = myReader.GetString(name);
if (!c.Items.Contains(temp))
{
c.Items.Add(temp);
}
}
}
myReader.Close();
}
catch (Exception e) { Console.WriteLine("Unable to load data from database"); }
}
public MainWindow()
{
InitializeComponent();
fillCombo("SELECT * FROM PERSONS;", "Person_Name", comboBox1);
}
答案 0 :(得分:1)
你可以得到这样的列名:
cmdReader = new MySqlCommand(query, conn);
myReader = cmdReader.ExecuteReader();
for(int index=0; index < reader.FieldCount; index++)
{
c.Items.Add(myReader.GetName(index));
}
答案 1 :(得分:0)
您可以在MySqlDataReader上使用GetSchemaTable()方法:
private void fillCombo(string query, string name, ComboBox c)
{
MySqlCommand cmdReader;
MySqlDataReader myReader;
try
{
cmdReader = new MySqlCommand(query, conn);
myReader = cmdReader.ExecuteReader();
var table = myReader.GetSchemaTable();
foreach (DataColumn column in Table.Columns)
{
string s = column.ColumnName;
if (!c.Items.Contains(s))
{
c.Items.Add(s);
}
}
myReader.Close();
}
catch (Exception e) { Console.WriteLine("Unable to load data from database"); }
}