ado.net是.net framework的数据供应顺序,它重要有SqlConnection、SqlCommand、SqlDataAdapter、SqlDataReader和DataSet五大对象组成,组织以下图
1.SqlConnection类示意一个sql server数据库的一个衔接
衔接字符串花样平常有以下两种情势,细致参数能够参照msdn
1)Persist Security Info=False;Integrated Security=true;Initial Catalog=Northwind;server=(local)
2)Server=.;Database=demodb;User=sa;Password=123;
建立一个衔接以下
SqlConnection conn = new SqlConnection(connString);
2.SqlCommand类示意数据库实行敕令对象
1)用来设置须要实行的sql剧本或存储历程、超时时候、参数和事件等。
2)建立体式格局以下
SqlConnection conn = new SqlConnection();
//体式格局一
conn.CreateCommand();
//体式格局二
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from table" ;
cmd.Connection = conn;
3)几个重要要领
ExecuteNonQuery:对衔接实行sql语句并返回受影响行数,重要实行增、删和改操纵
ExecuteReader:实行查询返回SqlDataReader对象
ExecuteScalar:实行查询返回效果集合的第一行和第一列
3.SqlDataAdapter类用来添补DataSet和更新数据库数据敕令和数据库衔接
该类有4种组织函数以下
public SqlDataAdapter();
public SqlDataAdapter(SqlCommand selectCommand);
public SqlDataAdapter(string selectCommandText, SqlConnection selectConnection);
public SqlDataAdapter(string selectCommandText, string selectConnectionString);
4.SqlDataReader类供应一种数据流只进体式格局读取
5.DataSet类示意数据在内存中的缓存
二、ADO.NET简朴完成
下面完成一个增、删、改、查的例子
public class EasySqlHelper { //web.config来设置 //private static string connString = ConfigurationManager.AppSettings["SqlConnectionString"]; private static string connString = "Server=.;Database=demodb;User=sa;Password=123;"; public static int ExecuteNonQuery(string sql) { using (SqlConnection conn = new SqlConnection(connString)) { using (SqlCommand cmd = new SqlCommand(sql, conn)) { if (conn.State != ConnectionState.Open) { conn.Open(); } return cmd.ExecuteNonQuery(); } } } public static SqlDataReader ExecuteReader(string sql) { SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader rdr = null; try { if (conn.State != ConnectionState.Open) { conn.Open(); } rdr = cmd.ExecuteReader(); } catch (SqlException ex) { conn.Dispose(); cmd.Dispose(); if (rdr != null) { rdr.Dispose(); } throw ex; } finally { cmd.Dispose(); } return rdr; } public static DataTable ExecuteDataTable(string sql) { using (SqlConnection conn = new SqlConnection(connString)) { using (SqlCommand cmd = new SqlCommand(sql, conn)) { if (conn.State != ConnectionState.Open) { conn.Open(); } SqlDataAdapter adp = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); adp.Fill(ds); return ds.Tables[0]; } } } }
上面代码中运用using来确保资本开释,一切完成IDisposable接口的类都能够用using来开释,纵然在挪用对象的要领上发作非常也会开释。
三、建立差别供应顺序的数据源类实例
上面代码只对sql server有用,假如要完成差别数据库如oracle则又须要别的写一套代码,.Net供应了DbProviderFactory类来建立差别数据库实例。
同时上面5大对象也要换成DbConnection、DbCommand、DbDataReader、DbDataAdapter把细致sql server对象笼统成更细致和数据库范例无关对象。
//// <summary> /// 衔接信息 /// </summary> public class ConnectionInfo { private string _connectionString; private string _providerName; /// <summary> /// 衔接字符串 /// </summary> public string ConnectionString { get { return _connectionString; } } /// <summary> /// 供应顺序的牢固称号 /// </summary> public string ProviderName { get { return _providerName; } } public ConnectionInfo(string connectionString, string providerName) { _connectionString = connectionString; _providerName = providerName; } } public class MySqlHelper { private static DbProviderFactory dbProvider; private static readonly ConnectionInfo connInfo = new ConnectionInfo("Server=.;Database=demodb;User=sa;Password=123;", "System.Data.SqlClient"); private static void GetProvider() { dbProvider = DbProviderFactories.GetFactory(connInfo.ProviderName); } static MySqlHelper() { GetProvider(); } public static int ExecuteNonQuery(string sql, DbParameter[] parameters) { int flag = 0; using (DbConnection conn = dbProvider.CreateConnection()) { conn.ConnectionString = connInfo.ConnectionString; conn.Open(); using (DbCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; if (parameters != null && parameters.Length > 0) { cmd.Parameters.AddRange(parameters); } flag = cmd.ExecuteNonQuery(); } } return flag; } public static void ExecuteReader(string sql, DbParameter[] parameters, Action<IDataReader> action) { IDataReader rdr = null; using (DbConnection conn = dbProvider.CreateConnection()) { conn.ConnectionString = connInfo.ConnectionString; conn.Open(); using (DbCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; if (parameters != null && parameters.Length > 0) { cmd.Parameters.AddRange(parameters); } rdr = cmd.ExecuteReader(); action(rdr); rdr.Close(); } } } public static DataTable ExecuteDataTable(string sql, DbParameter[] parameters) { DataTable dt = null; using (DbConnection conn = dbProvider.CreateConnection()) { conn.ConnectionString = connInfo.ConnectionString; conn.Open(); using (DbCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; if (parameters != null && parameters.Length > 0) { cmd.Parameters.AddRange(parameters); } IDataReader rdr = cmd.ExecuteReader(); dt = new DataTable(); dt.Load(rdr); rdr.Close(); } return dt; } } }
四、别的第三方框架
有Dapper、IBatis.Net等等,能够参考进修下
【相干引荐】
1. ASP.NET免费视频教程
2. C#运用Ado.Net更新和增加数据到Excel表格的要领
3. ADO.NET 读取EXCEL的完成代码((c#))
4. ADO.NET挪用存储历程
5. ado.net 衔接vs 数据库代码
以上就是什么是ado.net以及其简朴完成详解的细致内容,更多请关注ki4网别的相干文章!