`
SwiftHorse
  • 浏览: 210226 次
  • 性别: 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小结).

    ADO.NET本质论.pdf

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

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

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

    ADO.NET 小结。

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

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

    ADO.NET 连接数据库字符串小结,包括Oracle、SqlServer、Access、ODBC,需要的朋友可以收藏下

    ASP.NET完全入门PDF

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

    ADO.NET入门

    ado.net 如何读取 exce?ADO.NET在开发中的部分使用方法和技巧?数据库开发个人总结(ADO.NET小结)。。。本资源告诉你!

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

    连接数据库 SqlConnection myConnection = new SqlConnection(); myConnection.ConnectionString = “user id=sa;password=sinofindb;initial catalog=test;data source=127.0.0.1;Connect Timeout=30”; ...

    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. 记录删除 第三章 存储过程和...

    C#与数据库经典访问技术

    2.1 ADO.NET概述 2 2.1.1 ADO.NET体系结构 2 2.1.2 ADO.NET对象模型 3 2.2 Connection 对象与数据库连接 4 2.2.1 Connection对象的常用属性 4 2.2.2 Connection对象的连接字符串 5 ...2.9 本章小结 49

    数据库编程小结

    数据库客户端编程主要使用ODBC API、ADO、ADO.NET、OCI、OTL等方法;数据库服务端编程主要使用OLE DB等方法。数据库编程需要掌握一些访问数据库技术方法,还需要注意怎么设计高效的数据库、数据库管理与运行的优化、...

    ASP.NET应用开发案例教程

    5.2 ADO.NET数据库连接概述 5.3 使用Connection对象 5.4 使用Command和DataReader对象 5.4.1 Command对象 5.4.2 DataReader对象 5.4.3 使用Command对象实现存储过程访问 5.5 使用DataSet对象 ...

    C#与.NET3.5高级程序设计(第4版) 中文4

    22.8 ADO.NET的连接式访问 598 22.9 使用数据读取器 603 22.10 构建可重用的数据访问库 604 22.11 创建控制台UI前端 610 22.12 使用SqlCommand进行异步数据访问 614 22.13 数据库事务 616 22.14 小结 ...

    ASP.NET应用与开发案例教程

    5.2ADO.NET数据库连接概述 5.3使用Connection对象 5.4使用Command和DataReader对象 5.4.1Command对象 5.4.2DataReader对象 5.4.3使用Command对象实现存储过程访问 5.5使用DataSet对象 5.5.1DataTableCollection对象 ...

    精通ASP.NET.4.0网络编程 part-2

    第1篇ASP.NET网络开发关键技术第1章ASP.NET网络开发基础(教学视频87分钟)1.1ASP.NET事件模型和页面生命周期1.1.1经典的Web事件处理方法1.1.2ASP...数据和事件1.7小结第2章ADO.NET数据库访问技术(教学视频49分钟)2.1AD……

    精通ASP.NET.4.0网络编程 part-1

    第1篇ASP.NET网络开发关键技术第1章ASP.NET网络开发基础(教学视频87分钟)1.1ASP.NET事件模型和页面生命周期1.1.1经典的Web事件处理方法1.1.2ASP...数据和事件1.7小结第2章ADO.NET数据库访问技术(教学视频49分钟)2.1AD……

    精通c#数据库开发(pdg)

    数据库访问基础ADO.NET 1.1 ADO.NET概述 1.1.1 ADO.NET设计目标 1.1.2 ADO.NET结构 1.1.3 ADO.NET示例应用程序 1.2 .NET数据提供程序 1.2.1 使用ADO连接到数据源 1.2.2 Command命令 1.2.3 ...

Global site tag (gtag.js) - Google Analytics