ASP.NET——ADO.NET五大对象及两种连接方式

对ADO.NET的应该写了三篇博客了,之前的三篇博客

三层登录(D层)注重代码解析      机房重构——注重对SQLHelper类解析        对ADO.NET有个全面的了解(概况)     

感觉一次比一次深入,昨天在看ASP.NET视频的时候,又遇到了ADO.NET,再总结一下。

这次总结主要对ADO.NET的五大对象及两种连接方式进行总结。


五大对象


ADO.NET是.NET平台操作数据库的接口,更多的介绍详见对ADO.NET有个全面的了解(概况),而ADO.NET不用多想,就包含了下面的五个对象

不太懂为什么SqlDataAdapter封装了SqlCommand看下图

SqlDataAdapter的四个属性包含了增删改查(SqlCommand)四个属性,如果对上面图片的不太理解的话,下面结合代码进行分析


两种连接方式


面向连接式的:机房重构及牛腩用了此方法——实现了查的功能

//读取配置文件键值,获取数据库信息
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

//实例化Sqlconnection对象连接数据库
using (SqlConnection conn = new SqlConnection(connStr))
{
    
    //实例化SqlCoommand对象实现数据库操作
    using (SqlCommand cmd = new SqlCommand())
    {

        //获取此command对象使用的conncetion对象的名称
        cmd.Connection = conn;
        
        //获取要对数据源执行的SQL语句或存储过程或表名
        cmd.CommandText = " select * from UserInfo where ID=@ID";
        
        //为参数赋值
        SqlParameter par = new SqlParameter("@ID", SqlDbType.Int);
        par.Value = id;
        cmd.Parameters.Add(par);
        
        //打开数据库
        conn.Open();

        //实例化datatable对象及SqlDataReader对象
        DataTable dt = null;
        SqlDataReader sdr = null;
        
        //SqlDataReader对象接收command对象ExecuteReader方法返回的对象
        using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
        {
            //通过所提供的 IDataReader,用某个数据源的值填充 DataTable。
            dt.Load(sdr);
        }
        return dt;
}

先不解释,接着看

面向无连接式的:ASP.NET视频上用的方法——实现了查的功能

string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//根据接收到的ID查询数据表中相应的记录
using (SqlConnection conn = new SqlConnection(connStr))
{
    //实例化SqlDataAdapter对象对数据库进行操作
    using (SqlDataAdapter apter = new SqlDataAdapter("select * from UserInfo where ID=@ID", conn))
    {
        SqlParameter par = new SqlParameter("@ID", id);
        
        //使用SqlDataAdapter对象SelectCommand向参数集合中添加参数
        apter.SelectCommand.Parameters.Add(par);
        
        DataTable da = new DataTable();
        //用fill方法填充DataTable
        apter.Fill(da);
    }
}

两种方式在代码上的比较

  面向连接式 面向无连接式
操作数据对象

SqlCommand对象

SqlDataAdapter对象

添加参数集合

cmd.Parameters.AddRange(paras)

apter.SelectCommand.Parameters.Add(par);

填充Datable对象

SqlDataReader对象填充

using(sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
        dt.Load(sdr);
}

SqlDataAdapter对象fill方法填充

apter.Fill(dt);

从这个图中可以看出判断两个连接方式,就看是使用了SqlCommand对象还是SqlDataAdapter对象

进一步来看

两种方式在定义上比较

两种方法的区别便落在了SqlDataAdapter对象的fill方法及SqlCommand类的ExecuteReader方法

面向无连接:SqlDataAdapter对象的fill方法

fill方法填充的DataSet(DataTable)相当于在内存中开辟了一个小型数据库,与关系数据库无关,等使用增删改语句操作完后,使用update方法一并更新到关系数据库中,适用于数据量大

面向连接:SqlCommand类的ExecuteReader方法

ExecuteReader方法返回的是SqlDataReader对象,使用此对象填充DataSet(DataTable),相当于缓存,一直保持数据库连接,执行一句增删改语句便更新到关系数据库中,适用于数据量小

最后感谢您的阅读,有什么问题及建议,请您提出来,一起提高!

发布了156 篇原创文章 · 获赞 49 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/shang_0122/article/details/103141631
今日推荐