数据读取器和DataGridView控件的使用

来源:互联网 发布:网络主播唱得最火的歌 编辑:程序博客网 时间:2024/05/17 23:14
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Collections;using System.Data.OleDb;namespace 数据读取器和DataGridView控件的使用{    public partial class Form1 : Form    {        private OleDbConnection conn;        private OleDbCommand cmd;        private OleDbDataReader reader;        public class Item        {            public int CategoryID { get; set; }            public string CategoryName { get; set; }            public Item(int id,string name)            {                CategoryName = name;                CategoryID = id;            }            public override string ToString()            {                return this.CategoryID.ToString();            }        }        public Form1()        {            InitializeComponent();        }        private void Form1_Load(object sender, EventArgs e)        {            string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Northwind.mdb";            this.conn = new OleDbConnection(connectionString);            try            {                conn.Open();                cmd = new OleDbCommand();                cmd.Connection = conn;                cmd.CommandText = "SELECT 类别ID,类别名称 FROM 类别";                this.reader = cmd.ExecuteReader();                ArrayList categories = new ArrayList();                while (reader.Read())                    categories.Add(new Item(reader.GetInt32(0), reader.GetString(1)));                this.comboBoxCategory.DataSource = categories;                this.comboBoxCategory.DisplayMember = "CategoryName";                reader.Close();                this.cmd.CommandText = "SELECT DISTINCTROW 类别.类别名称,产品.产品名称,产品.单位数量,产品.库存量,产品.中止 FROM 类别 INNER JOIN 产品 ON 类别.类别ID=产品.类别ID WHERE(((产品.中止)=No)) ORDER BY 类别.类别名称,产品.产品名称";                this.reader = this.cmd.ExecuteReader();                object []data=new object[this.reader.FieldCount];                if (this.dataGridView1.Columns.Count == 0)                {                    for (int i = 0; i < reader.FieldCount; i++)                        this.dataGridView1.Columns.Add(reader.GetName(i), reader.GetName(i)); //添加字段名称                }                this.dataGridView1.Rows.Clear();                while (reader.Read())           //读取Reader中的行并放入DataGridView                {                    reader.GetValues(data);                    this.dataGridView1.Rows.Add(data);                }                reader.Close();            }            catch (OleDbException ex)            {                MessageBox.Show(ex.Message);            }        }        private void checkBoxIsFiltered_CheckedChanged(object sender, EventArgs e)        {            if (!this.checkBoxIsFiltered.Checked)                this.Form1_Load(sender, e);            else            {                this.cmd.CommandText = "SELECT DISTINCTROW 类别.类别名称,产品.产品名称,产品.单位数量,产品.库存量,产品.中止 FROM 类别 INNER JOIN 产品 ON 类别.类别ID=产品.类别ID WHERE (((产品.中止)=No AND 产品.类别ID=?)) ORDER BY 类别.类别名称,产品.产品名称";                //设置comboBox控件中的参数,对应于上面一条查询语句                this.cmd.Parameters.Clear();         //必须加入此句,才会使参数有效                this.cmd.Parameters.AddWithValue("类别ID", this.comboBoxCategory.SelectedValue.ToString());                try                {                    this.reader = this.cmd.ExecuteReader();                    object[] data = new object[reader.FieldCount];                    this.dataGridView1.Rows.Clear();                    if (reader.HasRows)                    {                        while (reader.Read())                        {                            reader.GetValues(data);                            this.dataGridView1.Rows.Add(data);                        }                    }                    reader.Close();                }                catch (OleDbException ex)                {                    MessageBox.Show(ex.Message);                }                            }        }        private void comboBoxCategory_SelectedIndexChanged(object sender, EventArgs e)        {            this.checkBoxIsFiltered_CheckedChanged(sender, e);        }    }}

原创粉丝点击