什么是ado.net

  介绍

这篇文章给大家分享的是有关什么是ado.net的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

<强>一、介绍

ado.net是。net框架的数据提供程序,它主要有SqlConnection, SqlCommand, SqlDataAdapter, SqlDataReader和数据集五大对象构成,结构如下图

什么是ado.net

<强> 1。SqlConnection 类表示一个sql server数据库的一个连接

连接字符串格式一般有如下两种形式,具体参数可以参照msdn

1)持续安全信息=False;综合安全=true;初始目录=罗斯文;服务器=(本地)

2)服务器=?demodb;数据库用户=sa;密码=123;

创建一个连接如下

<强> 2。SqlCommand 类表示数据库执行命令对象

1)用来设置需要执行的sql脚本或存储过程,超时时间,参数和事务等。

2)创建方式如下

3)几个主要方法

ExecuteNonQuery:对连接执行sql语句并返回受影响行数,主要执行增、删和改操作

ExecuteReader:执行查询返回SqlDataReader对象

ExecuteScalar:执行查询返回结果集中的第一行和第一列

<强> 3。SqlDataAdapter 类用来填充数据集和更新数据库数据命令和数据库连接

该类有4种构造函数如下

<强> 4. sqldatareader 类提供一种数据流只进方式读取

<强> 5.数据集类表示数据在内存中的缓存

<强>二、ADO。净简单实现

下面实现一个增,删,改,查的例子

EasySqlHelper公共类   {//web . config来配置//私有静态字符串connString=ConfigurationManager.AppSettings (“SqlConnectionString");   私有静态字符串connString=胺衿??demodb;数据库用户=sa;密码=123;“;      公共静态int ExecuteNonQuery (string sql)   {   使用(SqlConnection康涅狄格州=new SqlConnection (connString))   {   使用(SqlCommand cmd=new SqlCommand (sql,康涅狄格州))   {   如果(conn.State !=ConnectionState.Open)   {   conn.Open ();   }      返回cmd.ExecuteNonQuery ();   }   }   }      公共静态SqlDataReader ExecuteReader (string sql)   {   SqlConnection康涅狄格州=new SqlConnection (connString);   康涅狄格州SqlCommand cmd=new SqlCommand (sql);   SqlDataReader rdr=零;      试一试   {   如果(conn.State !=ConnectionState.Open)   {   conn.Open ();   }      rdr=cmd.ExecuteReader ();   }   抓住(SqlException异常交货)   {   conn.Dispose ();   cmd.Dispose ();      如果(rdr !=null)   {   rdr.Dispose ();   }      把交货;   }   最后   {   cmd.Dispose ();   }      返回rdr;   }      公共静态DataTable ExecuteDataTable (string sql)   {   使用(SqlConnection康涅狄格州=new SqlConnection (connString))   {   使用(SqlCommand cmd=new SqlCommand (sql,康涅狄格州))   {   如果(conn.State !=ConnectionState.Open)   {   conn.Open ();   }      SqlDataAdapter adp=new SqlDataAdapter (cmd);   数据集ds=新数据集();   adp.Fill (ds);      返回ds.Tables [0];   }   }   }   }

上面代码中使用使用来确保资源释放,所有实现IDisposable接口的类都可以用使用来释放,即使在调用对象的方法上发生异常也会释放。

<强>三、创建不同提供程序的数据源类实例

上面代码只对sql server有效,如果要实现不同数据库如甲骨文则又需要另外写一套代码,。净提供了DbProviderFactory类来创建不同数据库实例。

同时上面5大对象也要换成DbConnection, DbCommand, DbDataReader, DbDataAdapter把具体sql server对象抽象成更具体和数据库类型无关对象。

////& lt; summary>///连接信息///& lt;/summary>   公开课ConnectionInfo   {   私人字符串_connectionString;   私人字符串_providerName;///& lt; summary>///连接字符串///& lt;/summary>   公共字符串ConnectionString   {   {回报_connectionString;}   }///& lt; summary>///提供程序的固定名称///& lt;/summary>   公共字符串ProviderName   {   {回报_providerName;}   }      connectionString公共ConnectionInfo(字符串,字符串providerName)   {   _connectionString=connectionString;   _providerName=providerName;   }   }      公开课MySqlHelper   {   私有静态DbProviderFactory dbProvider;      私有静态只读的ConnectionInfo connInfo=new ConnectionInfo(“服务器=?demodb;数据库用户=sa;密码=123;“,“System.Data.SqlClient");      私有静态孔隙GetProvider ()   {   dbProvider=DbProviderFactories.GetFactory (connInfo.ProviderName);   }      静态MySqlHelper ()   {   GetProvider ();   }      公共静态int ExecuteNonQuery (string sql, DbParameter[]参数)   {   int国旗=0;      使用(DbConnection康涅狄格州=dbProvider.CreateConnection ())   {   conn.ConnectionString=connInfo.ConnectionString;   conn.Open ();      使用(DbCommand cmd=conn.CreateCommand ())   {   cmd。CommandText=sql;      如果参数!=零,,参数。长度比;0)   {   cmd.Parameters.AddRange(参数);   }      国旗=cmd.ExecuteNonQuery ();   }   }      返回国旗;   }      公共静态孔隙ExecuteReader (string sql, DbParameter[]参数,Action

什么是ado.net