这里主要是复习DataSet等数据或ADO.NET方面的知识。下面是一个简单的数据存储(在DataGridView上增加一行然后并存储到数据库的过程):

private void button1_Click(object sender, EventArgs e)
        {
            //插入一行内容
            SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=数据库名;User ID=sa;pwd=***");
            con.Open();
            SqlDataAdapter thisAdapter = new SqlDataAdapter("select itemId,productId,listPrice,unitCost,supplier,status,name,image from Item", con);
            SqlCommandBuilder scb = new SqlCommandBuilder(thisAdapter);
            DataSet ds = new DataSet();
            thisAdapter.Fill(ds, "Item");

try
            {
                if (txtItemId.Text != "" && txtPicture.Text != "" && txtProductCount.Text != "" && txtProductId.Text != "" && txtProductName.Text != "" && txtProductPrice.Text != "" && txtYouhuiPrice.Text != "")
                {
                    //TODO:判断txtitemid里的内容已经存在数据库(写个bool方法,然后再次判断调用即可)
                    DataRow newRow = ds.Tables["Item"].NewRow();
                    newRow["itemId"] = this.txtItemId.Text;
                    newRow["productId"] = this.txtProductId.Text;
                    newRow["listPrice"] = this.txtProductPrice.Text;
                    newRow["unitCost"] = this.txtYouhuiPrice.Text;
                    newRow["supplier"] = this.txtProductCount.Text;
                    newRow["status"] = this.comboSellMode.Text;
                    newRow["name"] = this.txtProductName.Text;
                    newRow["image"] = this.txtPicture.Text;
                    ds.Tables["Item"].Rows.Add(newRow);
                    thisAdapter.Update(ds, "Item");
                }

//更新datagridview表格
                //此处因为是绑定数据,不能用此句代码直接插入一行数据
                //dataGridView1.Rows.Add(new object[] { txtItemId.Text, txtProductId.Text, txtProductPrice.Text, txtYouhuiPrice.Text, txtProductCount.Text, comboSellMode.Text, txtProductName.Text, txtPicture.Text });//{}是对应列的值
                else
                {
                    MessageBox.Show("请将信息填写完整,并符合规则!", "Message to you:", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                con.Close();
                            }
            catch (Exception ex)
            {
                MessageBox.Show("请检查信息输入格式!" + ex.Message, "Message to you,", MessageBoxButtons.OK, MessageBoxIcon.Error);

//这里有个bug,没有实现表的同步更新
            }

}

一般关于使用DataSet的用法基本上都是一个模式,或者说数据连接这一块都是一个模式。

1. 首先就是SqlConnection 来new出来一个连接数据库的字符串;

2. 接着用DataAdapter对数据进行许多不同种类的操作,包括查询、更新和删除。它比DataReader对象更加通用一些;

3.然后并没有编写SQL语句来进行更新,而是创建了更简单实用的CommandBuilder对象,它可以为我们创建正确的SQL语句,然后并将其自动与DataAdaper相关联;

4.接下来就到了ado.net中重要的DataSet对象了,所有的复杂操作都会使用到它。它包含一组相关的DataTable对象,代表要使用的数据库表。每一个DataTable对象都有子DataRow和DataColumn对象,分别代表数据库表的行列。通过这些对象就可以获得表的所有元素;

5.然后就是DataAdapter的填充方法 :thisAdapter.Fill(ds, "Item");

6.最后要注意的是:数据库连接打开后,最后一定要关闭;对数据表操作后,一定要执行UpDate()方法,才能将修改保存到数据库;它隶属于DataAdapter。

上面六步基本就是各种套路的东西了,如果有对数据的操作,就可以把这些操作的语句放在填充之后,也就是Fill()方法之后,因为这些的更改只是停留在内存,需要最后执行DataAdapter的UpDate()方法才能最终得以更新到数据库中。

当这样的操作比较多的时候,就会发现很多方法的代码都是重复的,也就是上面那些套路。这个时候,我们就要用到面向对象了,也就是把这些相同的东西提取出来写成一个方法让大家共享,这就是一个面向对象或是不断重载等进行代码简化的过程,这就是真正严谨的开发的开始了吧。

datagridview的数据存取的更多相关文章

  1. JavaScript数据存取的性能问题

    JavaScript中四种基本的数据存取位置: 字面量:只代表自身 字符串.数字.布尔值.对象.函数.数组.正则,以及null和undefined    快 本地变量:var定义的    快 数组元素 ...

  2. Hyperledger中数据存取的实现

    简介 本文介绍了在Hyperledger中数据存取的实现. API接口 Hyperledger提供基于key/value的数据存储,其中key是字符串,value则是二进制字节数组,Hyperledg ...

  3. 高性能JS笔记2——数据存取

    数据存取性能而言: 字面量>本地变量>数组元素>对象成员 一.标识符解析的性能 标识符解析是有代价的,一个标识符的位置越深,它的读写速度也就越慢. 局部变量的读写速度是最快的,全局变 ...

  4. Laxcus大数据管理系统2.0(5)- 第三章 数据存取

    第三章 数据存取 当前的很多大数据处理工作,一次计算产生几十个GB.或者几十个TB的数据已是正常现象,驱动数百.数千.甚至上万个计算机节点并行运行也已经不足为奇.但是在数据处理的后面,对于这种在网络间 ...

  5. BindingNavigator操作DatagridView的数据

    参考 http://wenku.baidu.com/link?url=NWfEfArPZvDO_aI-xEKBHVGoZY9wQO_Oty_GCsGLiPspheCzFYLf_dytuWAqN2_0A ...

  6. 使用文本文件(.txt)进行数据存取的技巧总结(相当的经典)

    使用文本文件(.txt)进行数据存取的技巧总结(相当的经典) 使用文本文件(.txt)进行数据存取的技巧总结 由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用“----转----”标注,原 ...

  7. 关闭“编辑窗体”后, 主窗体的DatagridView刷新数据的问题

    问题:在关闭一个窗体2后,要刷新窗体1内的datagridview的数据,直接窗体1.datagridview.datasource=dt 是没用的. 解决办法如下: 在主窗体里 创建编辑窗体时 加上 ...

  8. C# 数据库dataGridView刷新数据和主外键判断

    本文主要讲诉在使用VS2012+SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改.删除.插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时通常会 ...

  9. DataGridView显示数据的两种方法

    1.简介 DataGridView空间是我们经常使用的显示数据的控件,它有极高的可配置性和可扩展性. 2.显示数据 DataGridView显示数据一般我们经常使用的有两种方法,一种是直接设置Data ...

随机推荐

  1. PHP API接口测试小工具

    前端时间给手机客户端做接口,当时弱爆了,写完API接口后,也不怎么测试,最后是等客户端调用的时候检验API的正确性. 后面利用PHP的curl实现Post请求,检验API接口的正确性:配合前面做的一个 ...

  2. 可视化(番外篇)——SWT总结

    本篇主要介绍如何在SWT下构建一个应用,如何安装SWT Designer并破解已进行SWT的可视化编程,Display以及Shell为何物.有何用,SWT中的常用组件.面板容器以及事件模型等. 1.可 ...

  3. 写在MongoCola在Github上获得200个Star之后

    MongoCola MongoCola是一个开源的MongoDB管理工具. 由于最初版本的设计失误,所以现在只能在Windows上使用,虽然可以在OSX上使用,但是非常别扭. 契机 MongoCola ...

  4. BP算法笔记

  5. 基于HTML5的Web SCADA工控移动应用

    在电力.油田燃气.供水管网等工业自动化领域Web SCADA的概念已经提出了多年,早先年的Web SCADA前端技术大部分还是基于Flex.Silverlight甚至Applet这样的重客户端方案,在 ...

  6. Data URL简介及Data URL的利弊

    之前写过一篇“漫谈前端优化”的文章,里面提到过DataUrl,粗鲁的描述了下,感觉不甚详焉,所以这几天也总结了这方面的知识,参考一些资料,补充一篇文章在这里,对这方面的资料来说,也是一种强化记忆应用: ...

  7. C#基础03

    学习集合的一些知识.集合:泛型集合,非泛型集合;ArrayList,Hashtable,List<T>,Dictionary<k,v>等,还有一些集合的常用方法. 一:集合的介 ...

  8. 一行代码实现js数组去重

    console.log([...new Set([1,2,3,4,2,1,2,2,2,167,4,3,32,2,1])])

  9. 基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  10. C#的变迁史 - C# 4.0 之多线程篇

    在.NET 4.0中,并行计算与多线程得到了一定程度的加强,这主要体现在并行对象Parallel,多线程Task,与PLinq.这里对这些相关的特性一起总结一下. 使用Thread方式的线程无疑是比较 ...