c#数据绑定

c#数据绑定_第1张图片

 

DataSet好处在于可以断开服务器,减少资源消耗

c#数据绑定_第2张图片

c#数据绑定_第3张图片

DataSet数据结构

c#数据绑定_第4张图片

语法

c#数据绑定_第5张图片

c#数据绑定_第6张图片

c#数据绑定_第7张图片

c#数据绑定_第8张图片 SqlDataAdapter语法

c#数据绑定_第9张图片

 

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.Data.SqlClient;

namespace FrmGrade
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //仓库
        string conStr = @"Data Source=DESKTOP-V6JGQFA\WINCCPLUSMIG2014;Initial Catalog=db_Express;Integrated Security=True";
        #region 适配器工作原理
        public void Work()
        {
            SqlConnection con = new SqlConnection(conStr);//连接(路)
            string sql = "select stuNumber,stuName from studentDb";//通行证
            SqlDataAdapter adapter = new SqlDataAdapter(sql, con);//货车

            //搬运到dataset仓库中的MyGrade
            DataSet ds = new DataSet();//临时仓库
            adapter.Fill(ds, "MyGrade");//成功完成一次搬运

            MessageBox.Show("临时数据库的房间数" + ds.Tables.Count);//1
            MessageBox.Show(ds.Tables[0].Rows.Count.ToString());

            MessageBox.Show("[MyGrade]的房间列数" + ds.Tables["MyGrade"].Columns.Count);

            //第二次搬运
            string sql2 = "select stuNumber,stuName,stuXb from studentDb";//凭证2
            adapter.SelectCommand.CommandText = sql2;//给车换个车牌
            adapter.Fill(ds, "MyStudent");
            MessageBox.Show("临时数据库的房间数" + ds.Tables.Count);
        }
        #endregion

        #region
        public void BingdingData()
        {
            SqlConnection con = new SqlConnection(conStr);//路
            string sql = "select stuNumber,stuName from studentDb";//凭证
            SqlDataAdapter adapter = new SqlDataAdapter(sql, con);//车
            DataSet ds = new DataSet();//临时仓库
            adapter.Fill(ds, "MyGrade");//填充数据到临时仓库ds的Mygarde房间

            //特殊情况,有个别数据的是手动加入的 原来的数据库中没有
            //加入【全部】相当于加入一个新的行 DataRow 匹配对应的列 现在是两个列
            //DataRow row = new DataRow()//无结构 结构不清楚 不采用
            DataRow row = ds.Tables["MyGrade"].NewRow();//按照MyGrade房间结构
            //只有2列stuNumber,stuName

            row[0] = -1; //-1反向取值 确保不会和数据库的数据重复冲突
            row[1] = "全部";//row[x]的某列的值默认是object类型,所以可以存放数字,文字
            //加入MyGrade
            //ds.Tables["MyGrade"].Rows.Add(row);//默认加到末尾

            //插入指定位置
            ds.Tables["MyGrade"].Rows.InsertAt(row, 0);

            //下拉框绑定数据
            cboGrade.DataSource = ds.Tables["MyGrade"];
            cboGrade.DisplayMember = "stuName";//显示对象,对应sql中的列名stuName
            cboGrade.ValueMember = "stuNumber";//值的对象,对应sql中的列名stuNumber经常是主外键关系的公共字段
            
        
        }
        #endregion
        private void btnShow_Click(object sender, EventArgs e)
        {
            //最佳显示方案是 在绑定数据的时候 指定显示对象 + 值对象
            //显示对象 对应的是text属性 、SelectedText属性
            //值对象 对应的是SelectedValue属性,可以直接拿到,不需要查询
            string gradedId = (string)cboGrade.SelectedValue;//object类型
            MessageBox.Show("你选择的是:" + gradedId);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            BingdingData();
        }
    }
}

c#数据绑定_第10张图片

c#数据绑定_第11张图片

 

 c#数据绑定_第12张图片

 

c#数据绑定_第13张图片

c#数据绑定_第14张图片

 c#数据绑定_第15张图片

你可能感兴趣的:(c#,winform,c#,数据仓库)