• 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();
        }
        }
        }

最新文章

  1. 邮件中嵌入html中要注意的样式
  2. git远程库GitHub
  3. java的Spring
  4. P3369 【模板】普通平衡树(Treap/SBT)
  5. webpack练手项目之easySlide(三):commonChunks(转)
  6. Spring MVC入门实战(一)
  7. 【转】MySQL Temporary Table相关问题的探究
  8. SQL 中逻辑运算符的优先级
  9. java 无法找到main类解决办法
  10. c/c++,输入一个字符 2014-11-20 07:00 30人阅读 评论(0) 收藏
  11. GWT开端
  12. Linux下编译、链接和装载
  13. Linux之定时器与时间管理 【转】
  14. python-bs4的使用
  15. 解决toad中number类型小数位数过长按科学计数法显示的问题
  16. 反向路径过滤——reverse path filter
  17. 【GO基础】main redeclared in this block问题的排查与解决
  18. Tomcat7 catalina.out 日志分割
  19. c#中var类型用法同dynamic,object区别
  20. Java - 慎用tagged class

热门文章

  1. 设置进程用指定IE版本
  2. spring boot配置druid连接池连接mysql
  3. python练习(一)----打印九九乘法表
  4. mac安装vue没有使用权限不足
  5. JS高级学习笔记(9) 之 转:前端路由跳转基本原理
  6. tomcat的8080,8009,8443,8005都是什么端口
  7. Sqlserver 增删改查----删
  8. PAT Advanced 1155 Heap Paths (30) [DFS, 深搜回溯,堆]
  9. JavaScript—纯函数
  10. POJ - 1631 Bridging signals(最长上升子序列---LIS)