• c#学习笔记04——ADO.NET


    • 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命令
          1)创建一个Command对象,指定SQL命令,并设置可以利用的数据库连接
          SqlCommand myCommand=new SqlCommand();
          myCommand.Connection=connection;
          myCommand.CommandText="Select * from DataTable";
          (2)在创建Command对象时,直接指定SQL命令和数据库连接
          SqlCommand myCommad=new SqlCommand("Select * from DataTable",connection);
        5. DataReader:如果利用Command对象执行的命令时有传回数据的Select语句,此时Command对象会自动产生一个DataReader对象,可以将数据源的数据抽取后显示给使用者。可以在执行Execute方法时传给一个DataReader类型的变量来接收。一次仅读取一条数据,且只能只读
        6.  1 using cs002;
           2 using System;
           3 using System.Collections.Generic;
           4 using System.Linq;
           5 using System.Text;
           6 using System.Threading.Tasks;
           7 using System.Data.SqlClient;
           8 namespace cs002
           9 { 
          10     public class program
          11     {
          12         public static SqlConnection CreateConnection()
          13         {
          14             string ConnectionString = "Data Source=arkiwang;initial Catalog=scott;User ID=sa;PassWord=123";
          15             SqlConnection sqlConnection = new SqlConnection(ConnectionString);
          16             return sqlConnection;
          17         }
          18         public static void Main(string[] args)
          19         {
          20             string name = Console.ReadLine();
          21             string selectSQL = "select * from students where StuName='" + name + "'";
          22             SqlConnection sqlConnection = CreateConnection();
          23             SqlCommand cmd = new SqlCommand(selectSQL, sqlConnection);
          24             SqlDataReader reader;
          25 
          26             try
          27             {
          28                 sqlConnection.Open();
          29                 reader = cmd.ExecuteReader();
          30                 reader.Read();
          31                 Console.WriteLine("学生{0}的基本信息:", name);
          32                 Console.WriteLine("姓名:{0}", reader["StuName"]);
          33                 Console.WriteLine("电话:{0}", reader["Phone"]);
          34                 Console.WriteLine("地址:{0}", reader["Address"]);
          35                 Console.WriteLine("城市:{0}", reader["City"]);
          36                 Console.WriteLine("国家:{0}", reader["State"]);
          37 
          38             }
          39             catch(Exception err)
          40             {
          41                 Console.WriteLine("连接数据库错误:{0}", err.Message.ToString());
          42             }
          43             finally
          44             {
          45                 sqlConnection.Close();
          46                 //Console.WriteLine("前数据库连接:{0}", SqlConnection.State.ToString());
          47 
          48             }
          49             Console.ReadLine();
          50         }
          51     }
          52 }
          View Code
      • 不链接的数据库访问:会在内存中的DataSet对象中保存数据的副本,在数据库断开链接后仍然能操作这些数据。不链接的数据库访问方式并不是意味着不需要连接到数据库,而连接数据库后,把数据从数据库中取出并放入DataSet,然后断开数据库连接,这时虽然断开连接,但仍可以对这些数据进行操作。不过因为连接已经断开,将不会同步到数据库影响其状态
        1. DataAdapter:数据适配器DataAdapter表示一组数据命令和一个数据库连接,它们用于填充DataSet和更新数据源。常与DataSet一起配合使用,作为DataSet和数据源之间的桥接器以便检索和保存数据。
        2. DataSet:从数据库完成数据抽取后,DataSet就是数据的存放地,它是各种数据源中的数据在计算机内存中映射成的缓存。

                              特性

          1. 独立性:DataSet独立于各种数据源
          2. 离线(断开)性:DataSet既可以以离线方式也可以以实时连接来操作数据库中的数据
          3. DataSet对象是一个可以用XML形式表示的数据视图,是一种数据关系视图  
        1. 以不连接的方式获取数据:DataAdapter对象提供了一个名为Fill的方法,使用该方法可以把从数据库中获取的数据填充到DataSet对象中。
          1 /*Adapter为DataAdapter对象的一个实例,调用方法Fill把从数据库中获得的数据填充到DataSet对象的实例dsPubs中的一个名为Authors的表中。*/
          2 Adapter.Fill(dsPubs,"Authors");
          View Code
           1 using System;
           2 using System.Collections.Generic;
           3 using System.Linq;
           4 using System.Text;
           5 using System.Threading.Tasks;
           6 using System.Data.SqlClient;
           7 using System.Data;
           8 namespace cs001
           9 {
          10     public class program
          11     {
          12         private static DataSet dsPubs = new DataSet();
          13         public static SqlConnection CreateConnection()
          14         {
          15             string ConnectionString = "Data Source=arkiwang;initial Catalog=scott;User ID=sa;PassWord=123";
          16             SqlConnection sqlConnection = new SqlConnection(ConnectionString);
          17             return sqlConnection;
          18         }
          19         public static void Main(string[] args)
          20         {
          21             string name = Console.ReadLine();
          22             string selectSQL = "select * from students where StuName='" + name + "'";
          23             SqlConnection sqlConnection = CreateConnection();
          24             SqlCommand cmd = new SqlCommand(selectSQL, sqlConnection);
          25             // SqlDataReader reader;
          26             SqlDataAdapter adapter = new SqlDataAdapter(cmd);
          27 
          28             try
          29             {
          30                 sqlConnection.Open();
          31                 // reader = cmd.ExecuteReader();
          32                 adapter.Fill(dsPubs, "Students");
          33                 //reader.Read();
          34                 sqlConnection.Close();
          35                 //Console.WriteLine("前数据库连接:{0}", SqlConnection.State.ToString());
          36 
          37                 Console.WriteLine("学生{0}的基本信息:", name);
          38                 Console.WriteLine("学号:{0}",dsPubs.Tables ["Students"].Rows[0]["ID"]);
          39                 Console.WriteLine("姓名:{0}", dsPubs.Tables[0].Rows[0]["StuName"]);
          40                 Console.WriteLine("电话:{0}", dsPubs.Tables[0].Rows[0]["Phone"]);
          41                 Console.WriteLine("地址:{0}", dsPubs.Tables[0].Rows[0]["Address"]);
          42                 Console.WriteLine("城市:{0}", dsPubs.Tables[0].Rows[0]["City"]);
          43                 Console.WriteLine("国家:{0}", dsPubs.Tables[0].Rows[0]["State"]);
          44 
          45             }
          46             catch (Exception err)
          47             {
          48                 Console.WriteLine("连接数据库错误:{0}", err.Message.ToString());
          49             }
          50             finally
          51             {
          52                 //sqlConnection.Close();
          53                 //Console.WriteLine("前数据库连接:{0}", SqlConnection.State.ToString());
          54             }
          55             Console.ReadLine();
          56         }
          57     }
          58 }
          View Code

                                           

     

  • 相关阅读:
    P1117 [NOI2016] 优秀的拆分 SA+DP
    P3346 [ZJOI2015]诸神眷顾的幻想乡 广义SAM
    P3705 [SDOI2017]新生舞会 分数规划+费用流
    P2336 [SCOI2012]喵星球上的点名 SA+树状数组
    543. Diameter of Binary Tree
    451. Sort Characters By Frequency
    563. Binary Tree Tilt
    703. Kth Largest Element in a Stream
    743. Network Delay Time
    kaggle _Titanic: Machine Learning from Disaster
  • 原文地址:https://www.cnblogs.com/yuelien/p/6664221.html
Copyright © 2020-2023  润新知