`
tiansoft
  • 浏览: 176126 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

C#对数据的常用操作

阅读更多
在做项目的时候,少不了对数据的添加,删除,修改等操作,有时候感觉到很简单,但是如果要考虑到很多问题的话,那么就不是那么简单了,因为需要考虑到很多的问题和因素,下面是树形结构上采用数据源方式对数据进行操作,感觉到还可以,所以记下来,以后对自己有用。
/**
         *
         *添加物料分类的方法
         */
        private void barButtonItem添加_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //初始化父编号
            int pid = 0;
            //初始化记录数
            int res = 0;
            //初始化编码相同的记录数
            int encode = 0;
            //初始化最大编号
            int max = 0;
            //获取当前鼠标指向的单位地区记录
            DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
            //如果所获取的行不为空
            if (row != null)
            {
                //取出的行不为空
                //取出物料分类编号,并赋给父编号
                pid = (int)row["编号"];
                //获取最大编号
                max = this.物料分类TableAdapter1.ScalarQuery最大编号().Value;

            }
            else {
                //如果记录为空
                //那么初始化父编号为0
                pid = 0;
                //初始化顺序号为0
                max = 0;
            }
            //实例化添加物料分类窗口
            Form_FL ffl = new Form_FL();
            //获得连接
            ffl.sqlConnectionStringBuilder = sqlConnectionBuilder;
            //用户单击确定按钮
            if (ffl.ShowDialog() == DialogResult.OK)
            {
                //判断是否存在相同的编码
                encode = this.物料分类TableAdapter1.ScalarQuery编码(ffl.Text编码.Text).Value;
                //sql语句,查询根据用户输入的父编号和地区名称查询数据库存在的记录数
                res = this.物料分类TableAdapter1.ScalarQuery同名(ffl.Text名称.Text, pid).Value;
             
                //如果存在
                if (encode > 0)
                {
                    //提示用户不能添加
                    XtraMessageBox.Show("该物料的编码已经存在,不能添加!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    //程序终止
                    return;
                }

                //如果数据库中有记录,同一节点中不能添加同名的数据
                if (res > 0)
                {
                    //如果数据库中已经存在物料分类,那么就提示用户是否保存
                    DialogResult result = MyControl.MyMessageBox.Show("该名称已经存在,是否保存!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                    //如果保存
                    if (result == DialogResult.OK)
                    {
                        //连接物料分类数据集
                        DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
                        //向数据库添加物料信息的数据
                        newrow["父编号"] = pid;
                        newrow["名称"] = ffl.Text名称.Text;
                        newrow["编码"] = ffl.Text编码.Text;
                        newrow["顺序号"] = max + 1;
                        newrow["说明"] = ffl.Text说明.Text;
                        //添加物料分类信息
                        this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
                        //更新数据
                        this.物料分类TableAdapter1.Update(newrow);

                    }

                }
                else {

                    //连接物料分类数据集
                    DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
                    //向数据库添加物料信息的数据
                    newrow["父编号"] = pid;
                    newrow["名称"] = ffl.Text名称.Text;
                    newrow["编码"] = ffl.Text编码.Text;
                    newrow["顺序号"] = max + 1;
                    newrow["说明"] = ffl.Text说明.Text;
                    //添加物料分类信息
                    this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
                    //更新数据
                    this.物料分类TableAdapter1.Update(newrow);

                }
                    
            }
        }
/**
         * 同级添加物料分类方法
         */
        private void barButtonItem添加同级_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //初始化父编号
            int pid = 0;
            //初始化记录数
            int res = 0;
            //初始化编码记录数
            int encode = 0;
            //初始化最大编号
            int max = 0;
            //获取当前鼠标的节点所在的行
            DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
            //如果用户没有选中某一个节点
            if (row == null) {
                //提示用户
                MyControl.MyMessageBox.ShowMsg("请选择要添加的同级目录!","添加提示");
                //程序终止
                return;
            }
            //把获取的编号赋给父编号
            pid = (int)row["父编号"];
            //实例化添加窗口
            Form_FL ffl = new Form_FL();
            //获得数据库连接
            ffl.sqlConnectionStringBuilder = sqlConnectionBuilder;
            //用户单击确定按钮后
            if (ffl.ShowDialog() == DialogResult.OK) {

                //判断是否存在相同的编码
                encode = this.物料分类TableAdapter1.ScalarQuery编码(ffl.Text编码.Text).Value;
                //sql语句,查询根据用户输入的父编号和地区名称查询数据库存在的记录数
                res = this.物料分类TableAdapter1.ScalarQuery同名(ffl.Text名称.Text, pid).Value;
                //获取最大编号
                max = this.物料分类TableAdapter1.ScalarQuery最大编号().Value;
                //如果存在
                if (encode > 0)
                {
                    //提示用户不能添加
                    XtraMessageBox.Show("该物料的编码已经存在,不能添加!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    //程序终止
                    return;
                }
              
                //如果数据库中有记录,同一节点中不能添加同名的数据

                if (res > 0)
                {
                    //如果数据库中已经存在物料分类,那么就提示用户是否保存
                    DialogResult result = MyControl.MyMessageBox.Show("该名称已经存在,是否保存!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                    //如果保存
                    if (result == DialogResult.OK)
                    {
                        //连接物料分类数据集
                        DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
                        //向数据库添加物料信息的数据
                        newrow["父编号"] = pid;
                        newrow["名称"] = ffl.Text名称.Text;
                        newrow["编码"] = ffl.Text编码.Text;
                        newrow["顺序号"] = max + 1;
                        newrow["说明"] = ffl.Text说明.Text;
                        //添加物料分类信息
                        this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
                        //更新数据
                        this.物料分类TableAdapter1.Update(newrow);

                    }
                }
                else {

                    //连接物料分类数据集
                    DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
                    //向数据库添加物料信息的数据
                    newrow["父编号"] = pid;
                    newrow["名称"] = ffl.Text名称.Text;
                    newrow["编码"] = ffl.Text编码.Text;
                    newrow["顺序号"] = max + 1;
                    newrow["说明"] = ffl.Text说明.Text;
                    //添加物料分类信息
                    this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
                    //更新数据
                    this.物料分类TableAdapter1.Update(newrow);
                }      
            }
        }
/**
         *
         * 实现删除的方法
         *
         */
        private void barButtonItem删除_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //初始化编号
            int id = 0;
            //初始化记录数
            int res = 0;
            //获取当前鼠标所在节点的行
            DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
            //如果用户没有选中要删除的项
            if (row == null) {
               //提示用户
               MyControl.MyMessageBox.ShowMsg("请选择要删除的项!", "添加提示");
               //程序终止
               return;
            }
            //取出用户要删除的信息的编号
            id = (int)row["编号"];
            //提示用户是否确定删除
            DialogResult result = XtraMessageBox.Show("你确定要删除此信息吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            //如果用户确定要删除
            if (result == DialogResult.OK) {
           
                //检查物料信息表中是否用数据
                res = this.物料分类TableAdapter1.ScalarQuery物料信息(id).Value;
                //如果存在,不能删除
                if (res > 0) {

                    //提示物料信息表中存在,不能删除!
                    MyControl.MyMessageBox.Show("物料信息表中存在数据,不能删除!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    //程序终止
                    return;
                }
                //查看是否有子节点
                res = this.物料分类TableAdapter1.ScalarQuery子节点(id).Value;
                //如果存在子节点
                if (res > 0) {
               
                    // 提示用户
                    MyControl.MyMessageBox.ShowMsg("存在子节点,不能删除!", "提示");
                    //程序终止
                    return;
                }
                //调用delete方法,删除选中的数据
                row.Delete();
                //更新数据
                this.物料分类TableAdapter1.Update(this.dataSet_Data1.物料分类);

            }
        }

  /**
         *实现修改物料分类信息
         *
         */
        private void barButtonItem修改_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //初始化编号
            int pid = 0;
            //初始化记录数
            int res = 0;
            //初始化编码的记录数
            int encode = 0;
            //获取鼠标当前所在行的节点
            DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
            //如果用户没有选中要修改的节点
            if (row == null) {
           
                //提示用户
                MyControl.MyMessageBox.ShowMsg("请选择要修改的项","修改提示");
                //程序终止
                return;
            }
            //取出要修改的父编号
            pid = (int)row["父编号"];
            // 实例化修改窗口
            Form_FL ffl = new Form_FL();
            //获得连接
            ffl.sqlConnectionStringBuilder = sqlConnectionBuilder;
            //把数据显示在窗体上
            ffl.Text名称.Text = row["名称"].ToString();
            ffl.Text编码.Text = row["编码"].ToString();
            ffl.Text说明.Text = row["说明"].ToString();
            //确定修改
            if (ffl.ShowDialog() == DialogResult.OK) {
                //判断是否存在相同的编码
                encode = this.物料分类TableAdapter1.ScalarQuery编码(ffl.Text编码.Text).Value;
                //sql语句,查询根据用户输入的父编号和地区名称查询数据库存在的记录数
                res = this.物料分类TableAdapter1.ScalarQuery同名(ffl.Text名称.Text, pid).Value;
                //如果存在,而且编码已经修改
                if (encode > 0 &&(ffl.Text编码.Text != row["编码"].ToString()))
                {
                    //提示用户不能修改
                    XtraMessageBox.Show("该物料的编码已经存在,不能修改!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    //程序终止
                    return;
                }

                //存在同名
                if (res > 0)
                {
                    //如果数据库中已经存在物料分类,那么就提示用户是否保存
                    DialogResult result = MyControl.MyMessageBox.Show("该名称已经存在,是否保存!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                    if (result == DialogResult.OK)
                    {
                        //把修改的数据存到数据库中
                        row.BeginEdit();
                        row["名称"] = ffl.Text名称.Text;
                        row["编码"] = ffl.Text编码.Text;
                        row["说明"] = ffl.Text说明.Text;
                        row.EndEdit();
                    }
                }
                else {

                    //把修改的数据存到数据库中
                    row.BeginEdit();
                    row["名称"] = ffl.Text名称.Text;
                    row["编码"] = ffl.Text编码.Text;
                    row["说明"] = ffl.Text说明.Text;
                    row.EndEdit();

                }    
      
            }
            //更新数据库信息
            this.物料分类TableAdapter1.Update(this.dataSet_Data1.物料分类);
        }
这些操作不管是做什么项目,都会少不了,即使变也是数据库表和字段的改变,但是只要能举一反三,就可以解决很多的问题了
分享到:
评论

相关推荐

    C#控件数据拖放操作

    在C#编程中,数据拖放(Drag and Drop)功能是一项常用的技术,它允许用户通过鼠标将数据从一个位置拖放到另一个位置。在本主题中,我们将深入探讨如何实现C#控件之间的数据拖放操作,以及如何在控件内部进行此类...

    c# 对DataTable各种常用操作的源代码

    附件包括 c# 对 DataTable各种常用操作的源代码 包括DataTable按起始位置和移动及移动方向进行移动并返回新的DataTable ;根据条件过滤表 ;返回两个表的关联数据,关联后的表中只包含第一个表的字段和第二个表需要...

    C# ACCESS 数据库操作类

    "C# ACCESS 数据库操作类"是一个自定义的C#类,设计用来简化对Access数据库的增、删、改、查等操作。这个类通常封装了ADO.NET的核心组件,如Connection、Command、DataAdapter和DataSet,使得代码更加模块化和易于...

    C#版Oracle数据库通用操作类

    `ConnForOracle` 类通过封装常用的数据库操作,极大地简化了 C# 应用程序与 Oracle 数据库之间的交互过程。它不仅提供了基础的连接管理和 SQL 执行功能,还包含了高级特性如数据分页和哈希表自动插入数据库等,为...

    C#treeview的常用操作和横向树

    在C#编程中,TreeView控件是一个非常常用的组件,它用于呈现层次结构的数据,通常以树状的形式展示。本篇文章将深入探讨C# TreeView的常用操作,包括添加节点、查询节点、递归调用以及如何实现一个横向展示的树形...

    C#操作ACCESS数据库,MDB文件读写

    在.NET框架中,C#是一种常用的编程语言,用于开发各种应用程序,包括与数据库交互的应用。在本场景中,我们关注的是如何使用C#操作Microsoft Access数据库(通常以.MDB文件格式存储)。Access数据库是一个关系型...

    c#word操作类WordHelper

    在.NET开发环境中,C#是一种常用的编程语言,用于构建各种应用程序,包括与Microsoft Office套件交互的项目。本文将深入探讨“WordHelper”类,这是一个专门用于操作Word文档的工具类,提供了丰富的功能来满足各种...

    C#对XML的操作详细介绍

    C#是微软.NET框架下的主要编程语言,支持对XML的全面操作。本篇文章将深入探讨如何使用C#进行XML的创建、添加、删除和查询等操作。 首先,我们来看XML的创建。在C#中,可以使用`System.Xml`命名空间中的`Xml...

    C#常用类大全(包括数据库操作类)

    在.NET开发领域,C#是一种广泛使用的编程语言,尤其在ASP.NET框架下,开发者们经常需要处理各种各样的任务,如数据库操作、日志记录、字符串处理、JavaScript交互、文件操作以及FTP传输等。以下是对标题和描述中提及...

    C#对数据库操作类包括多种操作数据库的方法

    在.NET框架中,C#是一种常用的编程语言,用于构建各种应用程序,其中数据库操作是不可或缺的一部分。C#提供了丰富的工具和库来与各种数据库进行交互,包括但不限于SQL Server、MySQL、Oracle和SQLite等。本篇文章将...

    C# 对Cookie、Session、Cache的操作辅助类

    本篇文章将深入探讨C#中对这三个概念的操作辅助类,以及如何利用它们来提升Web应用的性能和用户体验。 首先,我们来看Cookie。Cookie是一种在客户端存储用户特定信息的小型文本文件。在C#中,我们可以使用`System....

    C#数据库操作类AccessHelper实例

    在C#编程中,数据库操作是常见的任务,用于与数据存储进行交互。AccessHelper是一个专门为Access数据库设计的C#操作类,它简化了对数据库的读写和其他常见操作。以下是对AccessHelper类及其功能的详细解释: 1. **...

    c#datagrdView更新数据、操作Excel等文档

    在C#编程中,`DataGridView`控件是一个非常重要的组件,用于显示和操作表格数据。在Windows应用程序中,我们经常使用它来展示数据库中的数据,同时也支持用户进行编辑、添加和删除操作。以下是对标题和描述中涉及的...

    C#操作XMl 三种方法 包括对读取入库

    本篇文章将详细介绍C#处理XML的三种方法,包括读取XML数据、对数据库进行操作以及修改XML节点。 首先,我们来探讨第一种方法:读取XML文件。在C#中,我们可以使用System.Xml命名空间下的类来实现这一功能。最常用的...

    C# 精装开发常用操作类(JF.CInstar)

    《C# 精装开发常用操作类——深入解析JF.CInstar》 在C#编程领域,高效且易用的工具库是提升开发效率的关键。JF.CInstar库便是这样一个集大成者,它整合了一系列常用的操作类,为开发者提供了便捷的数据库连接、...

    C#操作Excel

    在.NET框架中,C#是一种常用的编程语言,用于开发各种应用程序,包括与数据处理相关的任务。在本场景中,我们关注的是如何使用C#来操作Excel文件,这通常涉及到读取、写入、导入和导出Excel数据,以及与Windows ...

    C#流操作C#流操作C#流操作

    总的来说,C#流操作是处理数据的核心机制,理解和熟练运用流能够高效地实现各种数据操作,如文件处理、网络通信、数据压缩等。通过掌握这些知识点,开发者能更好地构建高效、灵活的C#应用程序。

    C#数据库操作封装

    C#数据库操作封装,主要应用C#开发上位机对SQL Server数据的读写操作进行封装。

    C#数据库操作类,C#数据库操作类

    C#数据库操作类是用来连接、查询、插入、更新和删除数据库中的数据的一系列自定义类或方法。这些类通常封装了ADO.NET(.NET Framework的数据访问组件)中的基本操作,以提供更方便、更安全的数据库访问方式。 以下...

    C# PDF操作类 PDF

    PDFSharp是C#中常用的开源库,用于生成、读取和修改PDF文件。它可以创建新的PDF文档,添加文本、图像、图形和条形码,还可以合并多个PDF文档。例如,你可以使用PDFsharp创建一个简单的PDF文档,添加标题和段落,并...

Global site tag (gtag.js) - Google Analytics