这篇文章给大家分享的是有关什么是ado.net的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
<强>一、介绍强>
ado.net是。net框架的数据提供程序,它主要有SqlConnection, SqlCommand, SqlDataAdapter, SqlDataReader和数据集五大对象构成,结构如下图
<强> 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