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 ...
随机推荐
- Java:那些把自己陷进去的误区(一)
那些把自己陷进去的误区 1.1数据类型 1.整型: 1.在Java中,整形的范围为-2147 483 648—2147483647,并且这个范围与运行Java代码的机器无关,此举大大解决了移植问题 ...
- C#中string.format的格式和用法
String.Format 方法的几种定义: String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项. Str ...
- Android中动态更新ListView(转)
在使用ListView时,会遇到当ListView列表滑动到最底端时,添加新的列表项的问题,本文通过代码演示如何动态的添加新的列表项到ListView中.实现步骤:调用ListView的setOnSc ...
- [SDK2.2]Windows Azure Virtual Network (2) 创建简单的Virtual Network
<Windows Azure Platform 系列文章目录> 本章笔者将介绍如何创建一个简单的 Virtual Network. 1.首先我们登陆Windows Azure管理界面 ht ...
- php版本历史
php最初就是为了快速构建一个web页面而迅速被大家广为接受的.它的好处是在代码中能内嵌html的代码,从而让程序员能再一个页面中同时写html代码和php代码就能生成一个web页面. 这篇文章用时间 ...
- 基于HT for Web矢量实现3D叶轮旋转
在上一篇<基于HT for Web矢量实现2D叶轮旋转>中讲述了叶轮旋转在2D上的应用,今天我们就来讲讲叶轮旋转在3D上的应用. 在3D拓扑上可以创建各种各样的图元,在HT for Web ...
- ADO.NET封装的SqlHelper
参照别人的方法,顺便再次复习下ADO.NET的相关知识.为自己的类库做准备. namespace Common.SqlHelper { /// <summary> /// ADO.NET- ...
- 他答对一半(打一字)asp.net开源简答题项目
先出个字谜: 他答对一半(打一字) 你猜出来了没? 可以到这个网址答题:http://m.hovertree.com/miyu/bjae/4fpmm2td.htm 看你的答案是否正确. 这是ASP.N ...
- 【C#进阶系列】12 泛型
泛型是CLR和编程语言提供的一种特殊机制,它用于满足“算法重用” . 可以想象一下一个只有操作的参数的数据类型不同的策略模式,完全可以用泛型来化为一个函数. 以下是它的优势: 类型安全 给泛型算法应 ...
- jquery取消超链接