利用数据集进行数据访问操作

数据访问有两种不同的方式,一种是用Connection, Command , DataReader来进行数据对数据的操作,另一种是用DataAdapter(适配器)来进行数据操作,而数据则一般放在内存中的数据集合DataSet,这种方式可以在内存中对数据操作,然后在合适的时间再将修改传到数据库。

一. 建立数据集:

1. 在解决方案右键添加新建项,找到数据中的数据集:

2. 在服务器资源管理器里数据连接添加连接:

3. 之后找到数据库里面需要用到的表,选中之后拖拽至右侧数据集里:

这样一个数据集就建好了。

二:在数据集里添加新查询

1. 选中一个表的TableAdapter,右键配置高级选项,勾掉后两项,去掉并发

2. 右键添加查询,选SQL语句下一步,选择查询的类型(是要返回行或单个值或修改,删除,添加)下一步,写SQL语句,之后完成。

3. 这样在数据集可以看到我们自己添加的查询了:

三: 如何使用

1. 造适配器对象:

InfoTableAdapter adp = new InfoTableAdapter();

2. 造内存表对象

  Mydb.InfoDataTable table = new Mydb.InfoDataTable();

3. 查询返回

  table = adp.GetData();

4. 修改

  InfoTableAdapter adp = new InfoTableAdapter();
  adp.UpdateBycode(name, sex, nation, birthday, code);

例子:在DataGridView里面将内存数据集(dataset)显示,对其进行添加、删除、修改操作,之后将所有修改一并提交至数据库

在这里对数据集的操作都将会做出标记,在提交至数据库的时候系统会自动根据标记找到要修改、删除的行,对其进行操作。

代码:

private DataSet _DS = new DataSet();private void Form2_Load(object sender, EventArgs e)
        {
            //建立连接
            SqlConnection conn = new SqlConnection("server=.;database=mydb;uid=sa;pwd=901004");
            //造适配器
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = new SqlCommand();
            adapter.SelectCommand.CommandText = "select * from info";
            adapter.SelectCommand.Connection = conn;
            //执行查询,将数据添加进内存数据集
            adapter.Fill(_DS);
            //将内存数据集用控件显示
            dataGridView1.DataSource = _DS.Tables[0];

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //添加
            DataRow row = _DS.Tables[0].NewRow();
            row["Code"] = txtCode.Text;
            row["Name"] = txtName.Text;
            row["Sex"] = Convert.ToBoolean(txtSex.Text);;
            row["Nation"] = txtNation.Text;
            row["Birthday"] = Convert.ToDateTime(txtBirthday.Text);

            _DS.Tables[0].Rows.Add(row);

        }

        private void button2_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("server=.;database=mydb;uid=sa;pwd=901004");

            SqlDataAdapter adapter = new SqlDataAdapter();

            //添加的
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "insert into info values(@code,@name,@sex,@nation,@birthday)";
            cmd.Parameters.Add("@code", SqlDbType.VarChar, 50, "Code");
            cmd.Parameters.Add("@name", SqlDbType.VarChar, 50, "name");
            cmd.Parameters.Add("@sex", SqlDbType.Bit, 1, "Sex");
            cmd.Parameters.Add("@nation", SqlDbType.VarChar, 50, "Nation");
            cmd.Parameters.Add("@Birthday", SqlDbType.DateTime,8, "Birthday");
            adapter.InsertCommand = cmd;

            //修改的
            SqlCommand cmd1 = conn.CreateCommand();
            cmd1.CommandText = "update info set [email protected],[email protected],[email protected],[email protected] where [email protected]";
            cmd1.Parameters.Add("@code", SqlDbType.VarChar, 50, "Code");
            cmd1.Parameters.Add("@name", SqlDbType.VarChar, 50, "name");
            cmd1.Parameters.Add("@sex", SqlDbType.Bit, 1, "Sex");
            cmd1.Parameters.Add("@nation", SqlDbType.VarChar, 50, "Nation");
            cmd1.Parameters.Add("@Birthday", SqlDbType.DateTime, 8, "Birthday");
            adapter.UpdateCommand = cmd1;

            //删除的
            SqlCommand cmd2 = conn.CreateCommand();
            cmd2.CommandText = "delete from info where [email protected]";
            cmd2.Parameters.Add("@code", SqlDbType.VarChar, 50, "Code");
            adapter.DeleteCommand = cmd2;

            //提交
            adapter.Update(_DS);

            MessageBox.Show("OK");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //删除
            DataRow row = null;
            //找行
            foreach (DataRow dr in _DS.Tables[0].Rows)
            {
                if (dr["Code"].ToString() == txtCode.Text)
                {
                    row = dr;
                }
            }
            if (row != null)
            {
                //把行删掉
                row.Delete();
            }

        }
时间: 2024-10-07 13:37:25

利用数据集进行数据访问操作的相关文章

ARM 非对齐的数据访问操作

I’m confused about unaligned memory accesses on ARM. My understanding was that they’re not allowed — that is, dereferencing a 32-bit value from a pointer that’s not four-byte aligned will crash. I’ve run into such crashes before. But right now I’ve g

SharePoint 服务器端对象模型 之 使用LINQ进行数据访问操作(Part 2)

(四)使用LINQ进行列表查询 在生成实体类之后,就可以利用LINQ的强大查询能力进行SharePoint列表数据的查询了.在传统SharePoint对象模型编程中,需要首先获取网站对象,再进行其他操作:使用LINQ也是类似,对数据的访问和操作都要先获取DataContext网站,之后再通过这个DataContext进行数据访问. 1.获取网站和列表 DataContext的创建同样也是要使用绝对路径进行构造,并使用GetList方法获取相应的列表.例如下面的代码获取Chapters列表中所有的

SharePoint服务器端对象模型 之 使用LINQ进行数据访问操作(Part 3)

(五)使用LINQ进行数据更新 LINQ to SharePoint的优势不仅在于可以方便快捷地进行SharePoint列表数据查询,SPMetal所生成的数据实体类实际上是一个支持双向同步的模型,也就是意味着通过DataContext我们还可以将数据的变动提交到SharePoint列表中. 通过DataContext进行数据提交主要分成三个阶段:(1)确保DataContext支持数据提交,即其中的ObjectTrackingEnabled属性为true(默认值):(2)修改数据实体的内容:(

数据访问层

DAO 模式:讲解软件开发中的分层开发思想和技术,随着软件规模的扩大和业务的复杂,将一个软件分成多个层次进行开发,化大为小,分而治之,是缩短软件开发时间,提高软件开发效率的一种有效方法,也是目前软件开发一直使用的方法. 数据持久化:很多程序都有保存数据.读取数据的需要.程序运行时,保存在内存中的数据时瞬时的,关机之后将丢失.为了持久保存数据,需要将数据保存到磁盘中,比如保存到数据库或文件中.这样,程序启动时可以从磁盘读取数据,数据发生改变或程序关闭时,保存数据到磁盘,实现了数据的持久保存. 这里

SqlSugar简单工模式数据访问简单Demo

源代码地址:http://git.oschina.net/tiama3798/BootstrapBack_Demo 1.Model层 2.抽象层实例: 基础接口 /// <summary> /// 基础接口 /// </summary> public interface IBaseAbstract<T> where T : class { #region 基础访问 /// <summary> /// 获取表达式树 /// </summary> /

EF Core下利用Mysql进行数据存储在并发访问下的数据同步问题

小故事 在开始讲这篇文章之前,我们来说一个小故事,纯素虚构(真实的存钱逻辑并非如此) 小刘发工资后,赶忙拿着现金去银行,准备把钱存起来,而与此同时,小刘的老婆刘嫂知道小刘的品性,知道他发工资的日子,也知道他喜欢一发工资就去银行存起来,担心小刘卡里存的钱太多拿去"大宝剑",于是,也去了银行,想趁着小刘把钱存进去后就把钱给取出来,省的夜长梦多. 小刘与刘嫂取得是两家不同的银行的ATM,所以两人没有碰面. 小刘插入银行卡存钱之前查询了自己的余额,ATM这样显示的: 与次同时,刘嫂也通过卡号和

PHP中关于PDO数据访问抽象层的功能操作

PDO:数据访问抽象层 具有三大特点: 1.可以访问其它数据库  所有数据库都可以 2.具有事务功能 3.带有预处理语句功能(防止SQL注入攻击) 实例操作代码如下: <?php //1.造PDO对象$dsn ="mysql:dbname=mydb;host=localhost";//数据库类型:dbname=数据库名称;host=链接的ip或本机$pdo =new PDO($dsn,"root","root");//$dsn,帐号,密码

关于面对对象过程中的三大架构以及数据访问层(实体类、数据操作类)

面向对象开发项目三层架构: 界面层.业务逻辑层.数据访问层 数据访问层,分为实体类和数据访问类 在项目的下面添加一个App_Code文件夹把所有的类放在App_Code这个文件夹下边. 一.实体类 数据库中的表映射为一个类,类名与表名一致.表中的每一列,都为该类下的成员变量和属性也就是最简单的封装 把数据库中的表名变为类的类名. 把数据库中的每一个列,变为实体类中的成员变量和属性(也就是对每个数据库中的字段封装) 列名与属性名一致.成员变量名:在列名前边加上下划线.因为在外部访问只能访问到属性,

ASP.NET 数据访问层对用户列表的操作封装

用户列表对数据库的操作 使用到了模型MODEL层和DAL数据访问 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using CZBK.TestProject.Model;using System.Data.SqlClient; namespace CZBK.TestProject.DAL{ public class EmployeeDal {