`
444878909
  • 浏览: 637856 次
文章分类
社区版块
存档分类
最新评论

ADO.NET理论+实践

 
阅读更多

题记每一事物的产生和存在都有其特定的理由。


理论:ADO.NET是一组与数据源进行交互的面向对象类库。通常情况下数据源就是数据库,当然同样也能是文本文件,Excel表格或XML文件,我们知道的数据库有多种,例如SQLServerAccessOracle ,DB2等等,因为不同的数据源采用不同的协议,例如有的数据源使用ODBC协议,有的使用OleDb协议。而这些数据源都可以通过ADO.NET来进行连接。换句话说就是ADO.NET提供对SQLServerAccess等数据源的一致访问。如下图:

ADO.NET的结构主要包括两个核心组件:DataSet.NETFramework数据提供程序。


DataSet:我们可以把它当成内存中的数据库,也可以说Dataset是数据表的集合,它可以包含任意一个数据表(Datable)。 DataSet 具有三个大的特性:1.独立性,DataSet独立于各种数据源;2.断开和连接;3.DataSet对象是一个可以用XML形式表示的数据视图,是一种数据关系视图。

.NET Framework 数据提供程序是专门为数据操作以及快速,只进,只读访问数据而设计的组件。

ADO.NET操作数据库访问结构图:




从上图中可以看出.NET Framework数据提供程序的核心元素是:

1.Connection对象:提供与数据库的连接

2.Command对象是在成功与数据库连接之后,用Command对象来执行查询,修改,插入,删除等命令



3.DataReader对象:通过Command对象提供从数据库检索数据信息的功能。DataReader对象是以一种只读的、向前的、快速的方式访问数据库。

4.DataAdapter对象:是DataSet和数据源之间的桥梁。它通过映射Fill()方法来填充DataSet对象,通过Update()方法更新数据源中的数据。如果所连接的是Sql Server,可以通过将SqlDataAdapter与关联的SqlCommand和SqlConnection对象一起连用,从而提高性能。



5.DataTable对象是一个临时保存数据的一个网格虚拟表(表示内存中数据的一个表),包括行和列。

实践:ADO.NET操作数据库(以Sql Server为例)


1.命名空间引用using System.Data.SqlClient

2.成员SqlConnection SqlCommand SqlDataReaderSqlDataAdaPterDataset

3.Connection和数据库交互,必须连接它,它的作用相当于是在程序与数据库服务器之间建立一条通路。因此如果Connection连接不成功,所有的数据库操作都成空谈。Connection指明数据库服务器,数据库名字,用户名和密码,和连接数据库所需要的其他参数。

例如:

  • 1.定义连接字符串string Connstr ="data source=数据库服务器名;initial catalog=数据库名;user id=连接用户名;password=密码;"

字符串连接网址:http://www.connectionstrings.com/

  • 2.创建Connection对象:SqlConnectionconn=new SqlConnectionconnstr
  • 3.打开与数据库的连接conn.Open();
注意:由于数据库连接会出现异常,因此一般用Try_CATCH来捕获当数据库连接成功之后,再进行数据库操作。


4.Command如果说Connection好比是一条通路,那么Command类就相当于是在通路上来回跑的车辆,如果缺少它,在程序中所有对数据库的操作无法传递给数据库服务器因此,可以说ConnectionCommand组成ADO.NET的基础。

注意

1.设置CommandTextCommandType属性,一般情况下不需要设置CommandType属性,但是如果执行存储过程,则需要设 置CommandType属性为StoredProcedure

2.建议多使用参数,减少字符串的直接拼,可以防止SQL注入,例如下面的查询例子:


   Dim sql As String = "select * from T_USER where UserID=@UserID"
        Dim cmd As SqlCommand = New SqlCommand(sql, conn)

        Dim params As SqlParameter = New SqlParameter("@UserID", Iuser.UserID)
        cmd.Parameters.Add(params)

        Dim reader As SqlDataReader
        Try
            conn.Open()

            reader = cmd.ExecuteReader
            reader.Read()
            Iuser.UserID = Trim(reader.Item("UserID"))
            Iuser.UserPwd = Trim(reader.Item("UserPwd"))
            Iuser.Level = Trim(reader.Item("Level"))
            Return Iuser

        Catch ex As Exception

            Iuser.UserID = ""
            Return Iuser

        End Try

注意:Command 对象中的ExecuteNonQuery方法和ExecuteReader方法,由于没有弄清楚这两个,在做机房收费系统项目的时候,就出错了,调试的时候,调试了很长时间。
ExecuteNonQuery方法主要是处理非查询类型的语句,返回的个数是受影响的个数,但其对“INSERT”语句是不起任何作用的;而ExecuteReader方法主要是处理查询语句,但是需要借助DataReader来辅助操作。


5.DataReader:就像上面的例子一样,想要获得查询的记录集,仅仅依靠Command是无法完成的,还需要借助DataReader来读取查询的记录,需要说明的是DataReader仅仅获取的是一行记录。DataReader比较常用的方法是:Read()和GetValue ,前者是让DataReader 读取下一笔记录,如果有读到数据则传回True,若没有纪录则传回False。或者是获得某个字段的值,返回Object类型对象,需要进行类型转换才能得到某字段的值。


6.DataAdapter:可惜的是DataReader只能读取一行记录,为了弥补这个不足,ADO.NET提供了一个更好的,更方便的数据库操作,即DataAdapter类。对于一个DataAdapter类,可以设置四个Command属性,分别是SelectCommand,返回数据源的数据;InsertCommand、UpdateCommand和DeleteCommand用于管理数据源中的更改。调用DataAdapter的Fill方法之前必须设置SelectCommand属性,在调用Update方法之前必须设置InsertCommand、UpdateCommand或DeleteCommand属性,具体取决于DataTable中的数据做了哪些更改。换句话说这四个Command并不需要全部初始化,主要是看程序的具体要求,如果只需要用到查询方面,只设定一下SelectCommand即可。

DataAdapter操作返回的记录集,往往需要用DataSet来进行辅助操作。下面是一个查询充值记录例子,用DataAdapter的Fill方法对DataSet进行填充。

  Dim sql As String = "select CardNo as 卡号,addCash as 充值金额,RechargeDate as 充值日期,RechargeTime as 充值时间,UserID as 充值教师 from T_RECHARGE where CardNo=@CardNo"
       
        Dim cmd As SqlCommand = New SqlCommand(sql, conn)
        Dim params As SqlParameter() = New SqlParameter() {New SqlParameter("CardNo", CardNo)}

        cmd.Parameters.AddRange(params)

        Dim myAdapter As SqlDataAdapter = New SqlDataAdapter(cmd)
        Dim mySet As New DataSet()
        Dim myTable As New DataTable

        Try
            conn.Open()

            myAdapter.Fill(mySet, "充值表")
            myTable = mySet.Tables("充值表")

            conn.Close()

            Return myTable

        Catch ex As Exception

            Return myTable

        End Try

其实,相对而言,DataAdapter效率要更差一些,读取速度远远没有DataReader来的快,但是为了避免一些操作,如获取记录集,对获得数据的记录进行类型转换等等,所以更建议多使用DataAdapter!

以上是在敲机房收费系统过程中对ADO.NET的一点认识,后面会随着对机房收费系统的进一步实践,会将ADO.NET运用于实践中,相信在更多的实践中,会有更深刻的认识。


分享到:
评论

相关推荐

    ASP.NET应用开发案例教程——基于MVC模式的ASP.NET+c#+ADO.NET 课件

    全书论述了ASP.NET开发概述、C#及ADO.NET背景知识、ASP.NET Web窗体的基本控件、数据控件和数据绑定技术、用户控件和自定义控件、ASP.NET内置对象和缓存技术、ASP.NET应用程序配置及编译和部署、ASP.NET与Web服务、...

    下部分课件 ASP.NET应用开发案例教程——基于MVC模式的ASP.NET+c#+ADO.NET 课件

    全书论述了ASP.NET开发概述、C#及ADO.NET背景知识、ASP.NET Web窗体的基本控件、数据控件和数据绑定技术、用户控件和自定义控件、ASP.NET内置对象和缓存技术、ASP.NET应用程序配置及编译和部署、ASP.NET与Web服务、...

    ADO.NET数据库访问技术案例教程光盘

    本教材通过大量的实例,介绍了ADO.NET主要对象的基本概念和使用方法,着重探讨了Windows程序和Web程序中数据的浏览、搜索、添加、修改、删除、统计与输出等功能的实现方法,介绍了数据验证、数据绑定、记录导航、...

    ADO.NET 35 经典实例

    本书的新版本并不是向读者灌输各种理论,而是提供了超过200个的代码解决方案和最佳实践,针对读者每天使用ADO.NET时所面临的真正问题。这些解决方案不仅能够解决读者的当务之急,而且可以帮助读者理解这项技术的底层...

    ADO.NET 的最佳实践技巧

    同时也讲述了使用 ADO.NET 中可用对象的最佳实践;并提出一些有助于优化 ADO.NET 应用程序设计的建议。 本文包含: • 有关 .NET 框架包含的 .NET 框架数据提供程序的信息。 • DataSet 和 DataReader 之间的...

    ASP.NET网上书店(源程序+毕设+答辩PPT).zip

    系统中所用到的开发技术ASP.NET以及ADO.NET的特点、结构框架以及使用方法。接着对书店系统的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的主要页面、数据库、...

    三层架构ASP.NET网上书店

    系统中所用到的开发技术ASP.NET以及ADO.NET的特点、结构框架以及使用方法。接着对书店系统的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的主要页面、数据库、...

    电子书城系统-asp.net

    系统中所用到的开发技术ASP.NET以及ADO.NET的特点、结构框架以及使用方法。接着对书店系统的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的主要页面、数据库、...

    asp.net电子书城系统设计与实现(源代码+毕设)

    系统中所用到的开发技术ASP.NET以及ADO.NET的特点、结构框架以及使用方法。接着对书店系统的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的主要页面、数据库、...

    基于ASP.NET的网上书店系统设计与实现毕业设计(源程序+项目报告+答辩PPT).zip

    系统中所用到的开发技术ASP.NET以及ADO.NET的特点、结构框架以及使用方法。接着对书店系统的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的主要页面、数据库、...

    .NET网上书店的源码

    系统中所用到的开发技术ASP.NET以及ADO.NET的特点、结构框架以及使用方法。接着对书店系统的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的主要页面、数据库、...

    [计算机毕设]基于asp.net的网上书店系统设计与实现(源程序+项目报告+答辩PPT).zip

    系统中所用到的开发技术ASP.NET(C#)以及ADO.NET的特点、结构框架以及使用方法。接着对书店系统的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的主要页面、数据库...

    计算机专业毕设精选-ASP.NET技术在网站开发设计中的研究与开发(论文+源代码+开题报告).rar

    论文还深入剖析了ASP.NET中的关键技术,如MVC模式、ADO.NET数据库访问技术等,帮助读者更好地理解和掌握ASP.NET的精髓。 **源代码部分**: 源代码基于Visual Studio平台开发,采用C#作为编程语言。代码结构清晰、...

    毕业设计——学生信息管理系统

    系统中所用到的开发技术ASP.NET以及ADO.NET的特点、结构框架以及使用方法。接着对学生作业管理系统的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的主要页面、...

    asp.netSQL汽车销售管理系统

    系统中所用到的开发技术ASP.NET以及ADO.NET的特点、结构框架以及使用方法。接着对企业人事管理系统的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的主要页面、...

    基于jsp在线音乐网源码.zip

    适用于毕设,开发项目以及学习使用,源码数据文档齐全 、应用程序的设计与实现作了较为详细的讲解。 本音乐网站管理系统是在MyEclipse 平台上运用JSP技术来实现的。...【关键词】面向对象分析与设计,JSP,ADO.NET

    C#2.0程序设计详解电子教程

    本书介绍了微软最新的编程语言C# 2.0,全书共分7篇共18章,从基础到应用,内容涉及C# 2.0语法、面向对象编程、使用Visual Studio 2005快速可视化编辑器、.NET类库的使用、使用ADO.NET 2.0进行数据库编程,以及使用C#...

    完全手册:C#2.0程序设计详解电子教程3

    本书介绍了微软最新的编程语言C# 2.0,全书共分7篇共18章,从基础到应用,内容涉及C# 2.0语法、面向对象编程、使用Visual Studio 2005快速可视化编辑器、.NET类库的使用、使用ADO.NET 2.0进行数据库编程,以及使用C#...

    完全手册:C#2.0程序设计详解电子教程2

    本书介绍了微软最新的编程语言C# 2.0,全书共分7篇共18章,从基础到应用,内容涉及C# 2.0语法、面向对象编程、使用Visual Studio 2005快速可视化编辑器、.NET类库的使用、使用ADO.NET 2.0进行数据库编程,以及使用C#...

    完全手册:C#.2.0程序设计详解电子教程1

    本书介绍了微软最新的编程语言C# 2.0,全书共分7篇共18章,从基础到应用,内容涉及C# 2.0语法、面向对象编程、使用Visual Studio 2005快速可视化编辑器、.NET类库的使用、使用ADO.NET 2.0进行数据库编程,以及使用C#...

Global site tag (gtag.js) - Google Analytics