• ADO.NET结构:ADO.NET建立在几个核心类之上,这些类可以分为两组

    • 包含和管理数据的类:DataSet DataTable DataRow DataRelation...
    • 链接数据源的类:Connection Command DataReader...
  • 数据提供器与DataSet之间的关系

  • ADO.NET命名空间
  • 数据提供器类
  • 数据库访问方式
    1. 直接数据库访问:一种最容易的访问数据库的方式。使用直接数据库访问可以创建并执行SQL命令。使用直接访问数据库时,并不需要在内存中保存信息副本
      1. 简单的数据查询步骤(ASP.NET页面)
        1. 创建Connection Command和DataReader对象
        2. 使用DataReader对象从数据库获得信息,并显示在Web表单的控件里
        3. 关闭连接
        4. 发送页面到客户端。此时,在页面上看到的信息和数据库中的信息不存在任何联系,且所有的ADO.NET对象都被释放。
      2. 插入和更新数据步骤
        1. 创建Connection和Command对象
        2. 执行SQL命令
      3. 创建连接
        //声明一个Connection对象
        //为该对象的属性ConnectionString设定一个值
        //SQL Server .ver
        //DataSource=数据库服务器
        //Initial Catalog=要访问的数据库
        //User ID=登录名;Password=密码;
        SqlConnection connection=new SqlConnection();
        connection.ConnectionString="DataSource=zzl;Initial Catalog=BookSample;User ID=sa;PassWord=123";
      4. Select命令
        ()创建一个Command对象,指定SQL命令,并设置可以利用的数据库连接
        SqlCommand myCommand=new SqlCommand();
        myCommand.Connection=connection;
        myCommand.CommandText="Select * from DataTable";
        ()在创建Command对象时,直接指定SQL命令和数据库连接
        SqlCommand myCommad=new SqlCommand("Select * from DataTable",connection);
      5. DataReader:如果利用Command对象执行的命令时有传回数据的Select语句,此时Command对象会自动产生一个DataReader对象,可以将数据源的数据抽取后显示给使用者。可以在执行Execute方法时传给一个DataReader类型的变量来接收。一次仅读取一条数据,且只能只读
      6.  using cs002;
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;
        using System.Data.SqlClient;
        namespace cs002
        {
        public class program
        {
        public static SqlConnection CreateConnection()
        {
        string ConnectionString = "Data Source=arkiwang;initial Catalog=scott;User ID=sa;PassWord=123";
        SqlConnection sqlConnection = new SqlConnection(ConnectionString);
        return sqlConnection;
        }
        public static void Main(string[] args)
        {
        string name = Console.ReadLine();
        string selectSQL = "select * from students where StuName='" + name + "'";
        SqlConnection sqlConnection = CreateConnection();
        SqlCommand cmd = new SqlCommand(selectSQL, sqlConnection);
        SqlDataReader reader; try
        {
        sqlConnection.Open();
        reader = cmd.ExecuteReader();
        reader.Read();
        Console.WriteLine("学生{0}的基本信息:", name);
        Console.WriteLine("姓名:{0}", reader["StuName"]);
        Console.WriteLine("电话:{0}", reader["Phone"]);
        Console.WriteLine("地址:{0}", reader["Address"]);
        Console.WriteLine("城市:{0}", reader["City"]);
        Console.WriteLine("国家:{0}", reader["State"]); }
        catch(Exception err)
        {
        Console.WriteLine("连接数据库错误:{0}", err.Message.ToString());
        }
        finally
        {
        sqlConnection.Close();
        //Console.WriteLine("前数据库连接:{0}", SqlConnection.State.ToString()); }
        Console.ReadLine();
        }
        }
        }
    • 不链接的数据库访问:会在内存中的DataSet对象中保存数据的副本,在数据库断开链接后仍然能操作这些数据。不链接的数据库访问方式并不是意味着不需要连接到数据库,而连接数据库后,把数据从数据库中取出并放入DataSet,然后断开数据库连接,这时虽然断开连接,但仍可以对这些数据进行操作。不过因为连接已经断开,将不会同步到数据库影响其状态
      1. DataAdapter:数据适配器DataAdapter表示一组数据命令和一个数据库连接,它们用于填充DataSet和更新数据源。常与DataSet一起配合使用,作为DataSet和数据源之间的桥接器以便检索和保存数据。
      2. DataSet:从数据库完成数据抽取后,DataSet就是数据的存放地,它是各种数据源中的数据在计算机内存中映射成的缓存。

                          特性

        1. 独立性:DataSet独立于各种数据源
        2. 离线(断开)性:DataSet既可以以离线方式也可以以实时连接来操作数据库中的数据
        3. DataSet对象是一个可以用XML形式表示的数据视图,是一种数据关系视图
      1. 以不连接的方式获取数据:DataAdapter对象提供了一个名为Fill的方法,使用该方法可以把从数据库中获取的数据填充到DataSet对象中。
         /*Adapter为DataAdapter对象的一个实例,调用方法Fill把从数据库中获得的数据填充到DataSet对象的实例dsPubs中的一个名为Authors的表中。*/
        Adapter.Fill(dsPubs,"Authors");
         using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;
        using System.Data.SqlClient;
        using System.Data;
        namespace cs001
        {
        public class program
        {
        private static DataSet dsPubs = new DataSet();
        public static SqlConnection CreateConnection()
        {
        string ConnectionString = "Data Source=arkiwang;initial Catalog=scott;User ID=sa;PassWord=123";
        SqlConnection sqlConnection = new SqlConnection(ConnectionString);
        return sqlConnection;
        }
        public static void Main(string[] args)
        {
        string name = Console.ReadLine();
        string selectSQL = "select * from students where StuName='" + name + "'";
        SqlConnection sqlConnection = CreateConnection();
        SqlCommand cmd = new SqlCommand(selectSQL, sqlConnection);
        // SqlDataReader reader;
        SqlDataAdapter adapter = new SqlDataAdapter(cmd); try
        {
        sqlConnection.Open();
        // reader = cmd.ExecuteReader();
        adapter.Fill(dsPubs, "Students");
        //reader.Read();
        sqlConnection.Close();
        //Console.WriteLine("前数据库连接:{0}", SqlConnection.State.ToString()); Console.WriteLine("学生{0}的基本信息:", name);
        Console.WriteLine("学号:{0}",dsPubs.Tables ["Students"].Rows[]["ID"]);
        Console.WriteLine("姓名:{0}", dsPubs.Tables[].Rows[]["StuName"]);
        Console.WriteLine("电话:{0}", dsPubs.Tables[].Rows[]["Phone"]);
        Console.WriteLine("地址:{0}", dsPubs.Tables[].Rows[]["Address"]);
        Console.WriteLine("城市:{0}", dsPubs.Tables[].Rows[]["City"]);
        Console.WriteLine("国家:{0}", dsPubs.Tables[].Rows[]["State"]); }
        catch (Exception err)
        {
        Console.WriteLine("连接数据库错误:{0}", err.Message.ToString());
        }
        finally
        {
        //sqlConnection.Close();
        //Console.WriteLine("前数据库连接:{0}", SqlConnection.State.ToString());
        }
        Console.ReadLine();
        }
        }
        }

c#学习笔记04——ADO.NET的更多相关文章

  1. 机器学习实战(Machine Learning in Action)学习笔记————04.朴素贝叶斯分类(bayes)

    机器学习实战(Machine Learning in Action)学习笔记————04.朴素贝叶斯分类(bayes) 关键字:朴素贝叶斯.python.源码解析作者:米仓山下时间:2018-10-2 ...

  2. SaToken学习笔记-04

    SaToken学习笔记-04 如果有问题,请点击:传送门 角色认证 在sa-token中,角色和权限可以独立验证 // 当前账号是否含有指定角色标识, 返回true或false StpUtil.has ...

  3. Redis:学习笔记-04

    Redis:学习笔记-04 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 10. Redis主从复制 1 ...

  4. xml基础学习笔记04

    今天继续xml学习,主要是:SimpleXML快速解析文档.xml与数组相互转换 .博客中只是简单的做一个学习记录.积累.更加详细的使用方法,可以查看php手册 1.SimpleXML快速解析文档 前 ...

  5. OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法

    1 使用普通摄像头进行深度估计 1.1 深度估计原理 这里会用到几何学中的极几何(Epipolar Geometry),它属于立体视觉(stereo vision)几何学,立体视觉是计算机视觉的一个分 ...

  6. [Golang学习笔记] 04 程序实体1 变量声明

    变量声明: Go语言的程序实体包含:变量.常量.函数.结构体和接口,是一门静态类型的编程语言. (在声明变量或常量的时候,需要指定类型,或者给予足够信息是的Go语言能够推导出类型) Go语言变量的类型 ...

  7. [原创]java WEB学习笔记04:Servlet 简介及第一个Servlet程序(配置注册servlet,生命周期)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量

    我自己接触Linux主要是大学学习的Turbolinux --> 根据<鸟哥的Linux私房菜:基础篇>(第三版) --> 马哥的就业班课程.给我的感觉是这些课程对于bash的 ...

  9. Qt Creator 源码学习笔记04,多插件实现原理分析

    阅读本文大概需要 8 分钟 插件听上去很高大上,实际上就是一个个动态库,动态库在不同平台下后缀名不一样,比如在 Windows下以.dll结尾,Linux 下以.so结尾 开发插件其实就是开发一个动态 ...

随机推荐

  1. 通过request获得全路径

     <% String test = request.getScheme()+"://"+request.getServerName()+":"+reque ...

  2. vue作用域插槽实践

    引言 我在练手的时候发现后端返回的数据可以通过两种方式渲染 (自己遇到的 可能你都会 哈哈哈) 后端传过来的数据函数 from django.http import JsonResponse def ...

  3. Codeforces Round #616 (Div. 2)

    地址:http://codeforces.com/contest/1291 A题就不写解析了,就是给一个数,是不是本身满足这个条件或者删除某些数字来达到这个条件:奇数,各个位上的数字加起来是偶数. # ...

  4. springboot+thymeleaf项目中使用th:replace访问templates子目录下的模板,会报错找不到模板路径

    解决方法: 先将模板路径放置templates目录下,发现可以访问,说明th:replace是可以用的. 那可能是出现在路径问题上面. 于是我开始调错,改路径. 后来在网上查找资料.说了很多种方法. ...

  5. 部署Ambari Server实战案例

    部署Ambari Server实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备三台虚拟机(需要自行安装jdk环境) 1>.角色分配 NameNode节点: h ...

  6. 每天一点点之vue框架开发 - 引入Jquery

    1. 安装jquery npm install jquery --save-dev 2.在build/webpack.base.conf.js中添加如下内容 var webpack = require ...

  7. 19 01 15 js 尺寸相关 滚动事件

    尺寸相关.滚动事件 1.获取和设置元素的尺寸 width().height() 获取元素width和height innerWidth().innerHeight() 包括padding的width和 ...

  8. mybatis中实体类跟数据库属性不一致解决方案

    1.在Mapper.xml映射配置文件中给sql语句起别名 select id as uid,username as name from user 2.mybatis中可以单独的配置查询结果的列名和实 ...

  9. Android自定义View——彩色圆环统计图

      1.初始化变量 圆的粗细:圆环的大小. 标注:文字前面的圆点. 分配比例大小:由于需要计算圆环扫过的角度,计算方法使用:(比例/100)*360度,用百分比算出360度占用了多少,由于比例/100 ...

  10. 算法设计和分析(Prim算法构建最小生成树)

    问题: 给定无向图G(N,M)表明图G有N个顶点,M条边,通过Prim算法构造一个最小生成树 分析: 算法流程: 构造好的最小生成树就是step6 运行代码: #include<cstdio&g ...