ADO.NET(ActiveX Data Objects)大家都很熟悉,顾名思义用来访问数据库,.NET环境下首选的数据库访问接口。 访问数据库ADO.NET提供了两种模式:连接模式和断开模式。在说他们的区别之前用几张图来概括应用程序的运行机制和过程: 图1:整个应用程序的运行机制 图2:数据库连接机制 图3:ADO.NET 对象
通过上面三张图我们看到ADO.NET对象在应用程序和数据库间扮演者“桥梁”角色。DataSet和DataTable可以看做是数据容器。访问数据库的速度直接影响到应用程序的执行效率,ADO.NET 提供了两种数据库连接模式: 1. 连接模式:利用DataReader对象实现数据库连接模式: 代码如下: [csharp] view plaincopy
- public partial class DataRead : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- string str = "server=localhost;uid=sa;pwd=123456;database=DataTest";
- SqlConnection conn = new SqlConnection(str);
- SqlCommand cmd = new SqlCommand("select * from student", conn);
- conn.Open();
- SqlDataReader rdr = cmd.ExecuteReader();
- DataTable table = new Datable();
- table.Load(rdr);
- rdr.Close();
- conn.Close();
- }
- }
[csharp] view plaincopy
- <span style="font-size:18px;"> </span>
2. 断开模式:利用DataAdapter对象实现数据库断开模式: 代码如下: [csharp] view plaincopy
- public partial class DataRead : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- string str = "server=localhost;uid=sa;pwd=123456;database=DataTest";
- SqlConnection conn = new SqlConnection(str);
- string sql = "select * from student";
- SqlDataAdapter adp = new SqlDataAdapter(sql, conn);//Adepter对象
- DataSet ds = new DataSet();//DataSet对象
- adp.Fill(ds, "stu");//填充DataSet 并为当前表命名
- DataTableReader rdr = ds.CreateDataReader();
- while (rdr.Read())//读取表中数据
- {
- Response .Write("第n条数据");
- }
- }
- }
总结: SqlDataReader从字面上看数据读取,在读取数据的过程中一直与数据库保持连接,适合数据量小的情况,执行效率还是可以的。 SqlDataAdapter(数据适配器)可以说建立一个"本地数据库"--DataSet,先将数据取出来放到dataset中,然后就可以关闭数据库了,通过sqldataadapter还可以更新删除数据库中的东西,可以通过封装的Update等方法同步到数据库。 两种模式都可以搭配DataSet和DataTable使用。 数据量小,只读的情况下优先选择DataReader 数据量大,需要绑定数据远的情况下,需要修改数据同时更新到数据库,选择DataAdapter 没有那种模式是绝对的,根据自己的需要情况,各取所需,这样节省资源,提高效率,达到事半功倍的效果。 |