Windows应用程序的数据绑定

一,快速生成数据绑定

具体步骤如下;
(1)在VS中新建一个窗体应用程序项目
(2)在项目菜单选择“项目”—>“添加新数据源命令”,打开数据配置向导,
如果是VS2008可能直接在数据菜单项目中添加数据源
(3)选择数据源为“数据库”,单击下一步
这里写图片描述
(4)点击“新建连接”,首次链接会出现选择数据源窗口,选择“Microsoft SQL 2008 Server”,以后链接就默认使用SQL server

这里写图片描述

这里写图片描述
这里写图片描述
(5)输入服务器名和你需要绑定的数据库名。点击确定这里写图片描述
这里写图片描述
(6)选择数据库对象,选择需要访问的数据库表,单机完成按钮;
这里写图片描述
(7)安装完配置后悔增加一个类型化数据集,如下图,可以打开看自动生成的C#源程序
这里写图片描述
(8)执行数据菜单可看到数据源窗口
这里写图片描述
(9)此时你可以对数据表进行预览,或者直接拖动数据表到form窗口,
这里写图片描述

二、类型化数据集和TableAdapter

绑定数据源后悔自动生成一个类型化数据集,本文中数据库的名字是db_Mytime,类型化后数据集的名字变为db_MytimeDataSet;
每个加入的数据源得到数据表对应生成一个DataTable类(【表名】DataTable)一个DataRow类(【表名】Row),一个DataAdapter类(【表名】TableAtapter)
使用类型化和非类型化修改教师数据表时对比:

                DataRow row;
                DataTable teachertable;
                teachertable = ds.Table["Teacher"];
                row = teachertable.Rows[0];
                row["TeacherName"] = "赵飞";

                //使用类型化的数据集
                db_MytimeDataSet.TecherRow teacher;
                db_MytimeDataSet.TecherDataTable Table;
               Table = db_MytimeDataSet.Techer;
                teacher = Table[0];
                teacher.TecherName = "赵飞";

TableAdapter类
TableAdapter用来操作强类型DataTable中数据,每个DataTable会对应一个TableAdapter类负责该DataTabel中的数据检索和数据保存,
常用的方法包括:
Fill()方法和GetDdata()方法用于获取数据
Insert()方法,用于增加数据行
Delete()方法,用于删除数据行
若干个Update方法
下面是针对类型化的数据集操作的简单程序
为在程序中书写简化通常在程序文件中阿加入using语句

using TeacherRow = Save_TimeSpan.db_MytimeDataSet.TecherRow;
using TeacherDataTable = Save_TimeSpan.db_MytimeDataSet.TecherDataTable;
using Save_TimeSpan.db_MytimeDataSetTableAdapters;
        //声明并实例化一个Datatable对象和一个TableAdapter对象
        TecherTableAdapter techerTableadapter = new TecherTableAdapter();
        TeacherDataTable teacherTable = new TeacherDataTable();

winform界面如如下
这里写图片描述

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 TeacherRow = Save_TimeSpan.db_MytimeDataSet.TecherRow;
using TeacherDataTable = Save_TimeSpan.db_MytimeDataSet.TecherDataTable;
using Save_TimeSpan.db_MytimeDataSetTableAdapters;
namespace Save_TimeSpan
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }



        //声明并实例化一个Datatable对象和一个TableAdapter对象
        TecherTableAdapter techerTableadapter = new TecherTableAdapter();
        TeacherDataTable teacherTable = new TeacherDataTable();


        private void bindingNavigatorMoveLastItem_Click(object sender, EventArgs e)
        {

        }

        private void techerBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.techerBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.db_MytimeDataSet);

        }

        private void Form3_Load(object sender, EventArgs e)
        {
            // TODO: 这行代码将数据加载到表“db_MytimeDataSet.db_time”中。您可以根据需要移动或删除它。

            // TODO: 这行代码将数据加载到表“db_MytimeDataSet.Techer”中。您可以根据需要移动或删除它。
            this.techerTableAdapter.Fill(this.db_MytimeDataSet.Techer);
            dataGridView1.DataSource = db_MytimeDataSet.Techer;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            teacherTable = techerTableadapter.GetTeacherByID(textID.Text);
            if (teacherTable.Count > 0)
            {
                MessageBox.Show("数据库中已有该该ID信息", "警告");

            }
            else
            {
                TeacherRow teacherRow = teacherTable.NewTecherRow();
                teacherRow.TeacherID = textID.Text;
                teacherRow.TecherName = textName.Text;
                teacherRow.Sex = textsex.Text;
                teacherRow.Major = textMajor.Text;
                teacherRow.DepartmentID = Convert.ToByte(textParID.Text.ToString());
                teacherTable.AddTecherRow(teacherRow);
                techerTableAdapter.Update(teacherTable);
                //dataGridView1.Rows.Add();
                //DataGridViewRow row = dataGridView1.Rows[dataGridView1.Rows.Count - 1];
                //row.Cells[0].Value = teacherRow.TeacherID.ToString();
                //row.Cells[1].Value = teacherRow.DepartmentID.ToString();
                //row.Cells[2].Value = teacherRow.TecherName.ToString();
                //row.Cells[3].Value = teacherRow.Sex.ToString();
                //dataGridView1.Rows.Add(row);
                this.techerTableAdapter.Fill(this.db_MytimeDataSet.Techer);
                dataGridView1.DataSource = db_MytimeDataSet.Techer;
            }




        }

        private void textSex_TextChanged(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            int index = dataGridView1.CurrentRow.Index;
            teacherTable = techerTableAdapter.GetData();
            TeacherRow teacherRow = teacherTable[index];
            teacherRow.TeacherID = textID.Text;
            teacherRow.Major = textMajor.Text;
            teacherRow.TecherName = textName.Text;
            teacherRow.Sex = textsex.Text;
            teacherRow.Major = textMajor.Text;
            teacherRow.DepartmentID = Convert.ToByte(textParID.Text.ToString());
            techerTableAdapter.Update(teacherRow);
            dataGridView1.CurrentRow.Cells["TeacherID"].Value= textID.Text;
            dataGridView1.CurrentRow.Cells["TecherName"].Value = textName.Text;
            dataGridView1.CurrentRow.Cells["Sex"].Value = textsex.Text;
            dataGridView1.CurrentRow.Cells["DepartmentID"].Value = Convert.ToByte(textParID.Text.ToString());
            dataGridView1.CurrentRow.Cells["Major"].Value = textMajor.Text;
        }

        private void dataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                if (dataGridView1.CurrentRow.Cells[0] != null)
                {
                    DataGridViewRow dgvr = dataGridView1.CurrentRow;
                    textID.Text = dgvr.Cells[0].Value.ToString();
                    textParID.Text = dgvr.Cells[1].Value.ToString();
                    textName.Text = dgvr.Cells[2].Value.ToString();
                    textMajor.Text = dgvr.Cells[5].Value.ToString();
                    textsex.Text = dgvr.Cells[3].Value.ToString();
                }
                else
                {
                    textID.Text = "";
                    textParID.Text = "";
                    textName.Text = "";
                    textMajor.Text = "";
                    textsex.Text = "";
                }
            }
            catch
            { }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                teacherTable = techerTableAdapter.GetData();
                TeacherRow techRow = teacherTable[dataGridView1.CurrentRow.Index];
                techRow.Delete();
                techerTableAdapter.Update(techRow);
                dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);

            }
            catch
            {


            }
        }
    }
}

三、添加查询方法

双击…DataSet.xsd文件。打开设计器,然后选择要添加数据访问方法的TableAdapter,右击。选“添加查询”
这里写图片描述
这里写图片描述
可以多种方法,执行相应的SQL语句
这里写图片描述
编辑SQL语句,本文SQL语句为“SELECT TeacherID, DepartmentID, TecherName, Sex, Birthday, Major FROM dbo.Techer where ID=@TeacherID”
这里写图片描述
为形成的函数命名。一种以Fill开头,一种以Get开头,以fill开头的方法是吧,查询到的数据填充到一个DataTable对象中区,此对象必须已经实例化,以Get开头的方法直接返回一个DataTable,儿不需事先实例化,可以根据需要生成一种方法或者两种方法,本文选择Get方法命名为GetTeacherByID()
这里写图片描述
在程序应用来判断是都存在教师ID的信息

 teacherTable = techerTableadapter.GetTeacherByID(textID.Text);
            if (teacherTable.Count > 0)
            {
                MessageBox.Show("数据库中已有该该ID信息", "警告");

            }
            else

注意
在load事件中通常自动生成一程序


 // TODO: 这行代码将数据加载到表“db_MytimeDataSet.Techer”中。您可以根据需要移动或删除它。
            this.techerTableAdapter.Fill(this.db_MytimeDataSet.Techer);

这段代码的作用是使用TableAdapter从数据库中检索全部数据,填充到类型化数据集db_MytimeDataSet对象的Techer这个DAtaTable对象中,

     this.techerTableAdapter.Fill(this.db_MytimeDataSet.Techer);
            dataGridView1.DataSource = db_MytimeDataSet.Techer;

当然也可以采用如下几种方法;

            // TODO: 这行代码将数据加载到表“db_MytimeDataSet.db_time”中。您可以根据需要移动或删除它。
           //方法1
            // TODO: 这行代码将数据加载到表“db_MytimeDataSet.Techer”中。您可以根据需要移动或删除它。
            //this.techerTableAdapter.Fill(this.db_MytimeDataSet.Techer);
            //dataGridView1.DataSource = db_MytimeDataSet.Techer;
            //方法2通过函数获得数据表
             dataGridView1.DataSource = techerTableadapter.GetData();

            //方法3,将dataSource属性值设置为数据集对象,使用DataMeber属性设置要绑定的数据集中表的名称;
            //this.techerTableAdapter.Fill(this.db_MytimeDataSet.Techer);
            //dataGridView1.DataSource = db_MytimeDataSet;
            //dataGridView1.DataMember = "Techer";

以上语句就可以将Techer表在DatagridView中显示;

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值