如何从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)
{
}
}
}
将一个数据列表绑定到一个组合框,特别是当它是一个你已经有了的组合框时,将是非常直接的。因此,在这行之后:
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();
}}