`
SwiftHorse
  • 浏览: 214199 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

ADO.NET的数据库访问小结

阅读更多

  最近因工作需要,用C#做了些应用,现对ADO.NET的数据库访问作一个小结,以供大家交流学习,迟些时候贴上自己的一些代码。
  ADO.NET的数据访问对象是以下几个:
  1、Connection对象:与数据源建立连接,连接sql server7.0 或更新版本数据库用SqlConnection,连接OLEDB数据源使用OledbConnection.
  2、Command 对象:对数据源执行SQL命令并返回结果,SQL Server7.0或更新版本用SqlCommand,OLE DB数据源使用OledbCommand.
  3、DataReader对象: 读取数据源的数据,只能将数据源的数据从头到尾依次读出,Sql server7.0或以上版本使用SqlDataReader,Oledb数据源使用OledbReader
  4、DataAdapter对象:对数据源执行操作并返回结果,在DataSet与数据源之间建立通信,将数据源中的数据写入DataSet ,或根据DataSet中的数据必定数据源。Sql server7.0或以上版本使用SqlDataAdapter,Oledb 数据源使用OledbAdpater.
  5、DataSet对象:服务器内存中的数据库
  6、DataView对象:用于显示DataSet中的数据

  从数据库中读取纪录的另一种方法是使用Dataset对象和Dataadapter对象.Dataset是ADO.NET的主要组件之一,它用于缓存从数据源检索到的数据信息。Dataadapter作为Dataset和数据源之间的桥接器,用于检索和保存数据。Dataadapter从数据库中获取数据后使用Fill方法把数据填充到Dataset中。下面以Sqldataadapter为例说明如何使用Dataset对象和Dataadapter对象从数据库中读取记录。执行查询的关键步骤如下:
  1、创建与数据库建立连接的Sqlconnection,传递连接字符串。
  2、构造包含查询语句的Sqldataadapter对象;
  3、若要使用查询结果填充Dataset对象,则调用命令Fill方法。


  c#利用ado.net进行数据库开发的基本步骤:
  1、创建和数据库连接的connection 对象。
  2、配置DataAdapter对象并创建和操作数据集DataSet。
  3、将数据库中的表添加到DataSet中。
  4、把数据集DataSet绑定到DataGrid上。利用DataAdapter 的Fill方法把数据填充到DataSet,最终的数据库中的数据显示在用户界面的DataGrid中。


  c#中从数据库查询记录的方法分类:
        一般使用两种方法:
        一种是通过DataReader对象直接访问;另一种则是通过数据集Dataset和Dataadapter对象访问.
  使用ADO.NET的Datareader对象能从数据库中检索数据。检索出来的数据形成一个只读只进的数据流,存储在客户端的网络缓冲区内。Datareader对象的read方法可以前进到一下条记录。在默认情况下,每执行一次read方法只会在内存中存储一条记录系统的开销非常少。
  创建datareader之前必须先创建sqlcommand对象,然后调用该对象的executereader方法来构造sqldatareader对象,而不是直接使用构造函数。
  下面的示例程序完成的功能是访问sqlserver数据库,并使用datareader从northwind数据中读取记录,并将查询结果通过控制台输出。
  using System;
  using System.Data;
  using System.Data.SqlClient;
  namespace ReadDataFromDB{

  class Class1{

  static void Main(string[] args){
  string myconn="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind";
  //需要执行的SQL语句
  string mysql="select OrderID,CustomerID from Orders where CustomerID='CHOPS'";
  //打开数据库连接。
    SqlConnection myconnection=new SqlConnection(myconn);
  myconnection.Open();
    //创建SqlCommand 对象
  SqlCommand mycommand=new(mysql,myconnection);
    //通过SqlCommand的ExecuteReader()方法构造DataReader 对象。
  SqlDataReader myreader=mycommand.ExecuteReader();
  while(myreader.read()){
  Console.WriteLine(myreader.GetInt32(0)+","+myreader.GetString(1));

  }
  myreader.Close();
  myconnection.Close();

  }

  }

  }

 

 
分享到:
评论
10 楼 SteveGY 2007-07-11  
iBATIS for .NET
9 楼 blu3leaf 2007-07-08  
风往北吹 写道
楼主,你的那段代码,就是做演示都不能那么写。
和Java一样要
try
{
}
catch
{
}
finally
{
}
还有,没有特殊的需要,我很少在代码中出现
SqlCommand
SqlDataReader
SqlConnection (就是出现,一个Porject也就是一两次吧)
这些东西
和Java一样,面向接口编程,用IDbCommand,IDbConnection。


可以分层嘛~~把所有数据连接 都放 数据连接层,所有业务逻辑 都放 业务层,所有UI 都放 界面层
8 楼 风往北吹 2007-05-10  
taowen 写道
可以考虑用C#特有的Delegate包装出一个类似spring-jdbc-template的东西来。


    public delegate void DbConnectionOperator(DbConnection dbConnection);
        public virtual object ExecuteScalar(DbCommand dbCommand)
        {
            object scalarObject = null;
            OperateDatabase(delegate(DbConnection dbConnection) {
                                dbCommand.Connection = dbConnection;
                                scalarObject = dbCommand.ExecuteScalar();
                            });
            return scalarObject;
        }

        private void OperateDatabase(DbConnectionOperator dbConnectionOperator)
        {
            using (DbConnection dbConnection = CreateDbConnection())
            {
                dbConnection.Open();
                try
                {
                    dbConnectionOperator(dbConnection);
                }
                finally
                {
                    dbConnection.Close();
                }
            }
        }


嘿嘿,还是不错的哦。
可以加一个静态方法,直接从asp.net 2.0的app.config中读取<connectionStrings>信息来构造AdoDotNetTemplate实例:
AdoDotNetTemplate adt = AdoDotNetTemplate.BuildFromConfig(connectionName);
7 楼 taowen 2007-05-10  
可以考虑用C#特有的Delegate包装出一个类似spring-jdbc-template的东西来。
6 楼 打击者 2007-05-10  
风往北吹 写道
jack 写道
建议你使用微软企业库中的数据库部分库


Microsoft Enterprise Library January 2006的Data
写的很烂的,用起来不爽,没有快速开发的感觉。
不看也罢。


企业库3已出
5 楼 风往北吹 2007-05-10  
楼主,你的那段代码,就是做演示都不能那么写。
和Java一样要
try
{
}
catch
{
}
finally
{
}
还有,没有特殊的需要,我很少在代码中出现
SqlCommand
SqlDataReader
SqlConnection (就是出现,一个Porject也就是一两次吧)
这些东西
和Java一样,面向接口编程,用IDbCommand,IDbConnection。
4 楼 风往北吹 2007-05-10  
giscat 写道
用java的思路做.net
用.net的思路做java
都是很不错的
  可以取长补短


对的。
我没有做过Java开发,但是从ajoo的这个帖子
http://www.iteye.com/topic/13649?page=1
可以知道
.net的IDbConnection就是java的Connection
.net的IDbCommand就是java的Statement
IDbCommand实例由IDbConnection.CreateCommand()得到。
Statement的实例由Connection.createStatement()得到。
...

不同的地方就是.net的内存数据库DataSet,很是强大吧,非常适合快速开发。
3 楼 风往北吹 2007-05-10  
jack 写道
建议你使用微软企业库中的数据库部分库


Microsoft Enterprise Library January 2006的Data
写的很烂的,用起来不爽,没有快速开发的感觉。
不看也罢。
2 楼 giscat 2007-03-30  
用java的思路做.net
用.net的思路做java
都是很不错的
  可以取长补短
1 楼 jack 2007-03-28  
建议你使用微软企业库中的数据库部分库

相关推荐

    如何使用ADO.NET连接数据库

    ADO.NET 是 Microsoft .NET Framework 的一部分,提供了访问数据库的能力。使用 ADO.NET,可以连接各种类型的数据库,如 Access、SQL Server、Oracle 等。在本文中,我们将详细介绍如何使用 ADO.NET 连接数据库,...

    数据库开发个人总结(ADO.NET小结)

    ADO.NET是.NET框架中用于访问数据库的核心组件,它提供了与各种数据库系统交互的能力。在本文中,我们将深入探讨ADO.NET的关键概念,特别是通过SqlConnection和SqlCommand对象来连接和操作SQL Server数据库。 首先...

    ADO.NET本质论.pdf

    讲解了数据结构,演示了如何用ado.net来解决具体的数据访问问题。重点讨论了ado.net如何有效地平衡"功能的泛化"和"执行效率",以及它如何解决对扩展性、并发性和可靠性的要求。针对其他数据访问api(包括ole db,ado...

    C#利用Ado访问数据库

    本文将详细介绍如何使用C#结合ADO.NET技术实现对数据库的访问与操作。主要内容包括:C#与ADO.NET的基本概念、连接数据库的方法、执行SQL语句的方式以及数据集(DataSet)的使用。 #### C#与ADO.NET简介 - **C#语言**...

    【ASP.NET编程知识】ADO与ADO.NET的区别与介绍.docx

    ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份副本,ADO.NET的数据库连接也只有在这段时间需要在线。 4. 小结 ADO.NET为.NET架构提供了优化的数据访问模型,和基于COM的ADO是完全两样的...

    ADO.NET 2.0技术内幕(高清 中文 带书签 全)

    ADO.NET 2.0技术内幕(高清 中文 带书签 全) 编辑推荐 核心主题全面涵盖,深入剖析个人精髓;示例丰富,同时提供Visual ...15.6 小结 15.7 常见问题 第Ⅴ部分 附录 附录A 使用其他.NET数据提供程序 附录B 示例和工具

    11:ADO.NET_Command、DataReader对象和操作

    ADO.NET是Microsoft开发的一种数据访问技术,旨在提供高效、灵活且强大的数据访问能力,尤其适用于Web应用程序和分布式环境。它由一系列类库组成,主要包含Connection、Command、DataAdapter、DataSet以及DataReader...

    ADO.NET小结.doc

    ADO.NET是.NET Framework中用于与数据源交互的组件,它提供了高效、安全的数据库访问机制。在本文中,我们将深入探讨ADO.NET的核心概念和主要组件,以帮助理解如何使用它来操作数据库。 首先,ADO.NET的主要组件...

    ado.net教程[doc]

    ADO.NET是微软.NET框架中用于访问数据库的核心组件,它提供了高效、灵活且强大的数据访问机制。这个教程将深入探讨ADO.NET的基本概念、发展历程以及与早期的ADO(ActiveX Data Objects)相比的优势。 1. **ADO与ADO...

    ado.net下载网址

    ### 小结 虽然提供的链接本身可能只是一个简单的资源链接,但从这个起点出发,我们深入探讨了ADO.NET的基本概念、核心组件及其工作原理。了解这些基础知识对于任何希望使用ADO.NET进行数据访问的.NET开发人员来说都...

    ADO.NET 小结。

    ADO.NET 小结。 总结ADO.NET的两大组件,.NET数据提供程序的4个核心对象。 总结各个对象的作用。 总结数据库与应用程序之间交互的几条路径,每条路径的执行步骤,使用到的对象和方法。 图中黑色箭头表示应用程序从...

    asp.net 完全入门

    第三篇 ADO.NET数据库编程 第一章 ADO.NET简介 i. ADO.NET的发展历史 ii. ADO.NET框架模型 iii. ADO.NET对比ADO iv. 小结 第二章 访问数据库 i. 记录插入 ii. 记录修改 iii. 记录删除 第三章 存储...

    ASP.NET完全入门

    第三篇 ADO.NET数据库编程 第一章 ADO.NET简介 i. ADO.NET的发展历史 ii. ADO.NET框架模型 iii. ADO.NET对比ADO iv. 小结 第二章 访问数据库 i. 记录插入 ii. 记录修改 iii. 记录删除 第三章 存储过程和...

    ASP.NET完全入门PDF

    第三篇ADO.NET数据库编程 第一章 ADO.NET简介i. ADO.NET的发展历史ii. ADO.NET框架模型 iii. ADO.NET对比ADO iv. 小结第二章 访问数据库i. 记录插入 ii. 记录修改iii. 记录删除第三章 存储过程和触发器 i. 使用存储...

    ADO.NET 连接数据库字符串小结(Oracle、SqlServer、Access、ODBC)

    *** 是一种用于.NET框架的数据访问技术,它允许开发者使用.NET语言(如C#和***)来连接、操作和管理数据源。***组件位于.NET框架的数据提供程序中,这些提供程序为不同类型的数据库提供了连接和数据操作的能力。本文...

    ASP.NET学习小结

    在描述中提到的"ADO.NET中的视图和过滤器",可能涉及到如何使用ADO.NET访问数据库中的视图以及应用过滤条件来获取特定数据。视图是数据库中的虚拟表,集合了多个表的数据,而过滤器则是为了从这些数据中筛选出需要的...

    C_数据库访问精要

    ### C_数据库访问精要——ADO.NET详解 #### 一、ADO.NET概述 **1.1 ADO.NET简介** ADO.NET是由微软开发的一种用于数据库连接的组件模型,它是ADO(ActiveX Data Objects)的升级版。与传统的ADO相比,ADO.NET更加...

Global site tag (gtag.js) - Google Analytics