Futbyte 付柏特
Future Byte Technology——未来程式工作室

ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据。之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口。

传统的资料处理主要是依赖相互连接的双层式模型。随着资料处理朝多层次架构发展,程式设计人员也逐渐改用中断连接的方式,使应用程序更具延展性(Scalability)。
ADO .NET3.0 中用于存取和管理资料的两个主要元件是 .NET Framework 资料提供者和 DataSet。

资料提供者

.NET Framework 资料提供者是一种明确设计用于管理资料以及快速存取顺向只读资料的元件。Connection 物件会提供资料来源的连接。Command 物件可让开发人员存取资料库命令,以便传回资料、修改资料、执行预存程序 (Stored Procedure),并且传送或撷取参数资讯。DataReader 则可提供来自资料来源的高效能资料流。最后,DataAdapter 会提供 DataSet 物件与资料来源之间的桥接器 (Bridge)。DataAdapter 会使用 Command 物件与资料来源处执行 SQL 命令,以便将资料载入 DataSet,并且将 DataSet 内的资料变更调节回资料来源。

DataSet

ado.net DataSet 的设计已明确指出它可独立于任何资料来源外而存取资料。因此,它可与多个不同的资料里来源搭配使用、与 XML 资料搭配使用,或用于管理应用程序的本机资料。DataSet 包含一或多个由资料列和资料行所组成的 DataTable 物件集合,以及 DataTable 物件中的主索引键、外部索引键、条件约束 (Constraint) 及资料的相关资讯。

下面是名为SqlHelper的ado.net增删改查类的实例:

public static class SqlHelper
{
public static readonly string connstr =
ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;

public static SqlConnection OpenConnection()
{
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
return conn;
}

public static int ExecuteNonQuery(string cmdText,
params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
return ExecuteNonQuery(conn, cmdText, parameters);
}
}

public static object ExecuteScalar(string cmdText,
params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
return ExecuteScalar(conn, cmdText, parameters);
}
}

public static DataTable ExecuteDataTable(string cmdText,
params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
return ExecuteDataTable(conn, cmdText, parameters);
}
}

public static int ExecuteNonQuery(SqlConnection conn,string cmdText,
params SqlParameter[] parameters)
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
}

public static object ExecuteScalar(SqlConnection conn, string cmdText,
params SqlParameter[] parameters)
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteScalar();
}
}

public static DataTable ExecuteDataTable(SqlConnection conn, string cmdText,
params SqlParameter[] parameters)
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(parameters);
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
}

public static object ToDBValue(this object value)
{
return value == null ? DBNull.Value : value;
}

public static object FromDBValue(this object dbValue)
{
return dbValue == DBNull.Value ? null : dbValue;
}
}
View Code

 

  

posted on 2015-02-10 11:31  Futbyte  阅读(367)  评论(0编辑  收藏  举报