datagridview的数据存取
这里主要是复习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的数据存取的更多相关文章
- JavaScript数据存取的性能问题
JavaScript中四种基本的数据存取位置: 字面量:只代表自身 字符串.数字.布尔值.对象.函数.数组.正则,以及null和undefined 快 本地变量:var定义的 快 数组元素 ...
- Hyperledger中数据存取的实现
简介 本文介绍了在Hyperledger中数据存取的实现. API接口 Hyperledger提供基于key/value的数据存储,其中key是字符串,value则是二进制字节数组,Hyperledg ...
- 高性能JS笔记2——数据存取
数据存取性能而言: 字面量>本地变量>数组元素>对象成员 一.标识符解析的性能 标识符解析是有代价的,一个标识符的位置越深,它的读写速度也就越慢. 局部变量的读写速度是最快的,全局变 ...
- Laxcus大数据管理系统2.0(5)- 第三章 数据存取
第三章 数据存取 当前的很多大数据处理工作,一次计算产生几十个GB.或者几十个TB的数据已是正常现象,驱动数百.数千.甚至上万个计算机节点并行运行也已经不足为奇.但是在数据处理的后面,对于这种在网络间 ...
- BindingNavigator操作DatagridView的数据
参考 http://wenku.baidu.com/link?url=NWfEfArPZvDO_aI-xEKBHVGoZY9wQO_Oty_GCsGLiPspheCzFYLf_dytuWAqN2_0A ...
- 使用文本文件(.txt)进行数据存取的技巧总结(相当的经典)
使用文本文件(.txt)进行数据存取的技巧总结(相当的经典) 使用文本文件(.txt)进行数据存取的技巧总结 由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用“----转----”标注,原 ...
- 关闭“编辑窗体”后, 主窗体的DatagridView刷新数据的问题
问题:在关闭一个窗体2后,要刷新窗体1内的datagridview的数据,直接窗体1.datagridview.datasource=dt 是没用的. 解决办法如下: 在主窗体里 创建编辑窗体时 加上 ...
- C# 数据库dataGridView刷新数据和主外键判断
本文主要讲诉在使用VS2012+SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改.删除.插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时通常会 ...
- DataGridView显示数据的两种方法
1.简介 DataGridView空间是我们经常使用的显示数据的控件,它有极高的可配置性和可扩展性. 2.显示数据 DataGridView显示数据一般我们经常使用的有两种方法,一种是直接设置Data ...
随机推荐
- Android中自定义属性(attrs.xml,TypedArray的使用)
做Android布局是件很享受的事,这得益于他良好的xml方式.使用xml可以快速有效的为软件定义界面.可是有时候我们总感觉官方定义的一些基本组件不够用,自定义组件就不可避免了.那么如何才能做到像官方 ...
- RegularHelper
private const string m_NumberPattm = @"^[-+]?(0{1}|(([1-9]){1}[0-9]{0,6}))?$"; private con ...
- MSSQLLocalDB 连接字符串 vs2015
<add key="MSConnectionString" value="Data Source=(localdb)\MSSQLLocalDB;Initial Ca ...
- C语言学习001:让程序跑起来
编译工具下载 MinGW - Minimalist GNU for Windows 编译运行 #include <stdio.h> int main(){ puts("C roc ...
- Web API应用架构在Winform混合框架中的应用(4)--利用代码生成工具快速开发整套应用
前面几篇介绍了Web API的基础信息,以及如何基于混合框架的方式在WInform界面里面整合了Web API的接入方式,虽然我们看似调用过程比较复杂,但是基于整个框架的支持和考虑,我们提供了代码生成 ...
- ASP.NET MVC ValueProvider小结
在Model绑定中,Model的数据来源有很多种,在MVC里面则定义了一套ValueProvider的组件来处理Model数据来源多样性的问题,ValueProvider整个结构类似于字典(Dictr ...
- ASP.NET里的Session详细解释
Session模型简介 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器建立连 ...
- jquery.tagthis和jquery.autocomplete一起实现标签
目的 jquery.tagthis:http://www.dangribbin.co/jquery-tag-this/demo/ 使用tagthis控件实现标签的输入提醒功能,每个标签具有id和tex ...
- IOS----友盟推送详解
这两天好好的研究了下推送这功能,关于它我将分成两部分来讲,一.IOS手机端,二.Servlet服务端,今天先讲下IOS端 一.感受 下面讲下我对推送这个功能在IOS下的感受,这个算是我做了服务端的功能 ...
- PostgreSQL除法保留小数
select round(1::numeric/4::numeric,3);结果为0.25 select round( cast ( 1 as numeric )/ cast( 4 as numeri ...