ADO.NET数据访问技术

就是将C#和MSSQLl连接起来的纽带

可以通过ADO.NET将内存中的临时数据写入到数据库中,也可以将数据库中的数据提取到内存中供程序调用。是所有数据访问技术的基础。

ADO.NET使用一些ADO对象,如ConnectionCommand对象,也引入了一些新对象。关键的新对象包括DataSetDataReader,和DataAdapter

Connections. 用于连接和管理针对数据库的事务。

Commands. 用于发出针对数据库的SQL指令。

DataReaders. 用于从SQL Server数据源读取只进流的数据记录。

DataSets. 用于针对结构型数据,XML数据和关系型数据的存储,远程处理和编程。

DataAdapters. 用于推送数据到DataSet,并针对数据库协调数据。

Connections

Connections用于和数据库“沟通”,并且被声明为特定的提供程序级别,例如SQLConnection。Commands扫描连接然后结果集以流的形式被返回,这种流可以被DataReader对象读取,或者推入DataSet对象。

下面的例子演示了如何创建一个连接对象。Connections可以通过调用Open方法被显式打开

1 SqlConnection conn = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123");

数据库连接字符串

server=连接的数据库;database=连接数据库中国的那个表;user=用户名;pwd=密码

Commands

Commands包含提交到数据库的信息,特定于提供程序的类比如SQLCommand。一个命令可以是一个存储过程调用,一个UPDATE语句,或者一个返回结果的语句。你也可以使用输入和输出参数,返回值作为命令的一部分。下面的示例演示了如何对数据库执行一条insert(无返回值)语句和update(有返回值)语句。

数据访问类中的示例

 1  // 创建 SqlConnection 与 SqlCommand 对象 在构造函数中奖他们实例化出来
 2         SqlConnection conn = null;
 3         SqlCommand cmd = null;
 4         public UsresData()
 5         {
 6             conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123");
 7             cmd = conn.CreateCommand();
 8         }
 9  public void insert(Users u)//添加方法
10         {
11             cmd.CommandText = "insert into Users values(@a,@b,@c,@d,@e,@f,@g)";
12             cmd.Parameters.Clear();
13             cmd.Parameters.Add("@a",u.UserName);
14             cmd.Parameters.Add("@b", u.PassWord);
15             cmd.Parameters.Add("@c", u.NickName);
16             cmd.Parameters.Add("@d", u.Sex);
17             cmd.Parameters.Add("@e",u.Birthday);
18             cmd.Parameters.Add("@f", u.Nation);
19             cmd.Parameters.Add("@g",u.Area);
20             conn.Open();
21             cmd.ExecuteNonQuery();
22             conn.Close();
23         }
24         public bool update(Users u)//修改方法
25         {
26             bool ok = false;
27             cmd.CommandText = " update Users set [email protected],[email protected],[email protected],[email protected],[email protected],[email protected];";
28             cmd.Parameters.Clear();
29             cmd.Parameters.Add("@a",u.PassWord);
30             cmd.Parameters.Add("@b", u.NickName);
31             cmd.Parameters.Add("@c", u.Sex);
32             cmd.Parameters.Add("@d", u.Birthday);
33             cmd.Parameters.Add("@e", u.NickName);
34             cmd.Parameters.Add("@f", u.Area);
35             conn.Open();
36             try
37             {
38                 cmd.ExecuteNonQuery();
39                 ok = true;
40             }
41             catch
42             { }
43             conn.Close();
44             return ok;
45         }

DataReaders

DataReader对象有点类似一种只读/只进的数据游标。DataReader API不但支持平级数据而且支持层级数据。数据库执行一条命令后会返回一个DataReader对象。返回的DataReader对象格式不同于一个记录集。比如,你可以在一个web页面使用DataReader显示搜索结果列表。

下面的示例 读取数据库中数据的方法

 1 // 创建 SqlConnection 与 SqlCommand 对象 在构造函数中奖他们实例化出来
 2         SqlConnection conn = null;
 3         SqlCommand cmd = null;
 4         public UsresData()
 5         {
 6             conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123");
 7             cmd = conn.CreateCommand();
 8         }
 9
10         public Users select(string uname)//读取一条数据
11         {
12             Users u = null;
13             cmd.CommandText = "select * from Users where [email protected];"; //拼TSQL语句
14             cmd.Parameters.Clear();
15             cmd.Parameters.Add("@a",uname);
16             conn.Open();
17             SqlDataReader dr = cmd.ExecuteReader();
18             if (dr.HasRows)// 如果有数据
19             {
20                 dr.Read();//读取数据
21                 u = new Users();
22                 u.UserName = dr["UserName"].ToString();
23                 u.PassWord = dr["PassWord"].ToString();
24                 u.NickName = dr["NickName"].ToString();
25                 u.Sex = Convert.ToBoolean(dr["Sex"]);
26                 u.Birthday = Convert.ToDateTime(dr["Birthday"]);
27                 u.Nation = dr["Nation"].ToString();
28                 u.Area = dr["Area"].ToString();
29             }
30             conn.Close();
31             return u;
32         }
33
34         public List<Users> select()//查全部
35         {
36             List < Users > list = new List<Users>();
37             cmd.CommandText = "select * from Users";
38             conn.Open();
39             SqlDataReader dr = cmd.ExecuteReader();
40             if (dr.HasRows)
41             {
42                 while (dr.Read())
43                 {
44                     Users u = new Users();
45                     u = new Users();
46                     u.UserName = dr["UserName"].ToString();
47                     u.PassWord = dr["PassWord"].ToString();
48                     u.NickName = dr["NickName"].ToString();
49                     u.Sex = Convert.ToBoolean(dr["Sex"]);
50                     u.Birthday = Convert.ToDateTime(dr["Birthday"]);
51                     u.Nation = dr["Nation"].ToString();
52                     u.Area = dr["Area"].ToString();
53                     list.Add(u);
54                 }
55             }
56             conn.Close();
57             return list;
58         }

DataSets

DataSet对象和ADO RecordSet对象相似,但更强大,并且有一个重要区别:DataSet总是断开连接的。DataSet代表缓存数据,与数据库结构类似例如表,列,关系,和约束。然而,尽管DataSet可以也确实表现的更像一个数据库,最重要的请记住DataSet对象不直接和数据库交互,或者其他数据源。这使得开发人员无论使用什么数据源都可以始终使用一种一致的编程模型。数据从数据库,XML文件来,或者从用户输入来都可以放进DatSet对象。然后,当更改DataSet就可以被跟踪和验证之前更新数据源。DataSet对象的GetChanges方法实际上创建了第二个仅包含更改数据的DataSet。然后由DataAdapter(或其他对象)使用这个DataSet来更新原始数据源。

DataSet具备XML的特性,包括生产和消费XML数据和XML模式的能力。XML模式可以用来描述通过XML Web服务交换的模式。事实上,模式化DataSet实际上可以被编译为类型安全和完整的语句。

DataAdapters (OLEDB/SQL)

DataAdapter对象作为DataSet和数据源之间的桥梁。当使用Microsoft SQL Server数据库时,利用特定提供程序SqlDataAdapter(和他相关的SqlCommand和SqlConnection)可以提高整体的性能。对于其他支持OLE DB的数据库,你可以使用OleDbDataAdapter和他先关的OleDbCommand和OleDbConnection对象。

DataAdapter对象使用命令在DataSet完成变动后更新数据源。使用DataAdapter的Fill方法调用SELECT命令;使用Update方法对于每个更改行调用INSERT、UPDATE或者DELETE命令。你可以显示设置这些命令以便在运行时控制这些语句的使用解决变更,包括使用存储过程。对于特别的场景,CommandBuilder对象可以在运行时基于select语句生成这些语句。然而,运行时创建语句需要在服务器做额外的往返以便手机必须的源数据,所以在设计阶段显示的提供INSERT、UPDATE、和DELETE命令会导致更好的运行时性能。

小结:

    1. ADO.NET是适合于.NET框架的改进版的ADO。
    2. ADO.NET是在多层架构、无状态性与XML的情况下诞生的。DataSet和DataAdapter2个对象提供这些场景。
    3. ADO.NET可以被用于从流获取数据,或者缓存用于更新的数据。
时间: 2024-10-06 00:16:49

ADO.NET数据访问技术的相关文章

ADO.NET数据访问技术概览

1. 以数据为中心的应用程序设计 1.1. ADO.NET 支持下列的存储类型? 无结构? 有结构, 无层次的数据 – 以逗号分离的数据(CSV) 文件.Microsoft Excel 电子表格.Microsoft Exchange 文件.Active Directory 文件等? 有层次的数据 – XML 文档等? 关系型数据库 – SQL Server.Oracle.Access 等. 1.2. 连接环境? 连接环境是指用户在这种环境下始终保持与数据源的连接? 优点 – 环境易于实施安全控制

[翻译]比较ADO.NET中的不同数据访问技术(Performance Comparison:Data Access Techniques)

Performance Comparison: Data Access Techniques Priya DhawanMicrosoft Developer Network January 2002 原文链接:https://msdn.microsoft.com/en-us/library/ms978388.aspx 概要:在典型的应用环境中,比较不同数据访问技术的表现性能.适用于Microsoft .NET Framework Beta2 和 Microsoft SQL Server 2000

ADO.NET数据库访问技术

ADO.net:数据库访问技术程序操作的数据都是变量或对象,这些东西都存在于内存中但是有很多的数据是存在数据库中的,数据库中的数据存在于硬盘上 作用:将数据库中的数据取到内存中来,可以让程序进行操作 将内存中的数据,写入到数据库中 1.using System.Data.SqlClient; //引用命名空间 2.建立 数据库连接类 string str = "server=.;database=Data0515;user=sa;pwd=123;";//连接字符串 SqlConnect

ADO.NET(数据库访问技术)

[ADO.net结构]: ADO.NET用于访问和操作数据库的两个主要组件是:.NET Framework 数据提供程序和DataSet. a..NET Framework数据提供程序:是专门为数据操作设计的组件,用于处理不同的数据源,支持访问特定的数据库.执行SQL命令和检索结果. b..NET Framework数据提供程序包含4个核心对象:  Connection:(连接)建立与特定数据源的连接:   Command:(命令)对数据源执行命令:   DataReader:( 数据读取)从数

ADO.net数据访问

需要引用对应命名空间:System.Data.SqlClient; SqlConnection:连接对象SqlCommand:命令对象SqlDataReader:读取器对象 //造连接字符串 string connstring = "server=.;database=mydb;user=sa;pwd=123"; //造连接对象 SqlConnection conn = new SqlConnection(connstring); //创建命令对象 SqlCommand cmd = c

ADO.NET 数据访问类查询、属性扩展

今天,我首先在之前所做的人员管理系统的基础上,利用数据访问类进行了所有人员信息的查询. 主程序代码: List<Users> Ulist = new UsersData().Select(); if (Ulist.Count > 0)//判断是否包含语句 { foreach (Users u1 in Ulist)//遍历 { Console.WriteLine(u1.UserName + " " + u1.PassWord + " " + u1.N

ADO.NET(数据访问技术)

一.ADO.NET 就是将c#和sql连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存中供程序调用 二.连接数据库的基本格式 需要两个类 1.数据库连接类  SqlConnection 2.数据库操作类  SqlCommand 例: 在sql中创建数据库 create database DATA0720gouse DATA0720gocreate table xinxi(code nvarchar(200) primary key,[pa

ADO.NET数据库访问技术(转)

这几天的自学,现在总结一下关于C#中连接数据库的一些知识点: 1.使用Connection连接数据库的步骤: (1).添加命名空间 System.Data.SqlClient(注意:初学者经常会忘记) (2)定义连接字符串.连接SQL Server 数据库时: server=服务器名:database=数据库名:uid=用户名:pwd=密码:例如:要连接本机上的StudentManagement数据库,用户名为sa,密码为111 string connString="server=.;datab

asp.net LINQ数据访问技术from where select order by子句

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { int[] val