如何从MySQL数据库中选择数据,以便在组合框选择中使用

本文关键字:选择 组合 数据 MySQL 数据库 | 更新日期: 2023-09-27 18:03:26

所以通常当你创建一个组合框,你会把选择的值,但我想在我的组合框中的数据将从我的数据库mysql选择。我该怎么做呢?

我被困在选择数据从我的sql组合框!

这是我目前为止的代码!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            MySqlConnection connection = null;            
            string hostname = "localhost";
            string database = "aparece_hoteldb";
            string username = "root";
            string password = "";
            connection = new MySqlConnection("host=" + hostname + 
                                            ";database=" + database + 
                                            ";username=" + username + 
                                            ";password=" + password + ";");

            string table = "reservations";
            string query = "SELECT * FROM " + table;
            connection.Open();
            MySqlDataAdapter da_res = null;
            DataSet ds_res = null;
            ds_res = new DataSet();
            da_res = new MySqlDataAdapter(query, connection);
            da_res.Fill(ds_res, table);
            dataGridView2.DataSource = ds_res.Tables[table];
        }
        private void label2_Click(object sender, EventArgs e)
        {
        }
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
        }
    }
}

如何从MySQL数据库中选择数据,以便在组合框选择中使用

将一个数据列表绑定到一个组合框,特别是当它是一个你已经有了的组合框时,将是非常直接的。因此,在这行之后:

dataGridView2.DataSource = ds_res.Tables[table];

让我们再添加一些:

comboBox1.DisplayMember = "YourDisplayField";
comboBox1.ValueMember = "YourValueField";
comboBox1.DataSource = ds_res.Tables[table];

,这将把数据绑定到组合框。但是让我们来分析一下。DisplayMember是您希望用户看到的字段值。通常,这是行的名称或简短描述。ValueMember是你想要绑定到SelectedValue属性的字段。当用户在组合框中选择一个项目时,SelectedValue将被设置为该字段的值。

现在你可以消费一个比SelectedIndexChanged更好的事件,现在你可以消费SelectedValueChanged。每次用户选择一个新值,这个事件就会触发,你可以对它做你需要做的事情。

你可以得到实际的DataRow,如果你想通过转换的SelectedItem属性的组合框,像这样:

var row = comboBox1.SelectedItem as DataRow;

或者你可以直接获取这个值然后对它做点什么:

var val = comboBox1.SelectedValue;

,可以将其强制转换为ValueMember字段的任何类型。如果您将其设置为int字段,那么您可能会这样做:

var val = (int)comboBox1.SelectedValue;

如果是string字段,那么可能是这样的:

var val = comboBox1.SelectedValue as string;

假设sql返回了单列,可以设置组合框的数据源,从数据表或数据集填充它。

comboBox1.DataSource = myDataTable;

//在FORM_LOAD内部,

private void Form7_Load(object sender, EventArgs e){
        cboFloor.SelectedIndex = -1;
        cboFloor.DropDownStyle = ComboBoxStyle.DropDownList;
        GetFloor();
        }

//创建一个函数并插入下面的代码

private voide GetFloor{
        string query = @"SELECT DISTINCT floor FROM tbroom ORDER BY floor ASC";

        try
        {
            con.Open();
            MySqlCommand cmd = new MySqlCommand(query, con);
            MySqlDataReader rdr;
            rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                cboFloor.Items.Add(rdr["floor"]);
            }
        }
        catch (MySqlException mysqlex)
        {
            MessageBox.Show(mysqlex.Message.ToString());
        }
        finally
        {
            con.Close();
        }}