ADO.NET的主要对象

2018-06-22 04:39:35来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

ADO.NET主要分为五个对象:

1)Connection对象:用来连接程序与数据库。没有利用连接对象将数据库打开,是无法从数据库中取得数据的。Close和Dispose的区别,Close之后还可以用Open打开数据库,Dispose是释放资源,Dispose之后将不能再用Open。

2)Command对象:主要迎来对数据库发出一些指令,例如增删改查等指令,另外也可以调用数据库中的存储过程,这个对象时架构在Connection对象上,也就是Command对象是透过Connection连接到数据源。

3)DataAdapter:主要用在数据源以及DataSet之间执行数据传输的工作,可以通过Command对象下达命令之后,将取得的数据放入DataSet中,这个对象是架构在Command对象上,并提供了许多配合DataSetshiyong 的功能。

4)DataSet:这个对象可是看作是一个暂存区(暂时存储区域),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来,DataSet是存放在内存中的,DataSet不仅可以存储多个Table,还可以通过DataAdapter对象取得一些例如主键的呢过的数据表结构,并可以记录数据表之间的关联。DataSet对象可以说是ADO.NET中的重量级对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力,也就是说,我们是将DataAdapter对象当做是DataSet与数据源DB之间的桥梁 ,DataSet中包含若干DataTable,DataTable中包含若干DataRow。

5)DataReader:当我们只需要循环的读取数据而不需要其他的操作的时候,可以使用DataReader对象。DataReader对象只是一次一条向下循环的读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能读取到当前行的数据,而且这些数据只是只读的,并不允许其他操作。因为DataReader在读取数据的时候限制了一次一条的读取,而且只能只读,所以使用起来不但节省资源而且效率很好,使用DataReader对象除了效率好之外,因为不用把数据全部传回,因此可以降低网络的负载

总结:ADO.NET使用Connection对象来连接数据库,使用Command对象或DataAdapter对象来执行SQL语句,并将执行的结果返回给DataReader或者DataAdapter,然后在使用取得的DataReader或者DataAdapter对象操作数据结果。

以下是常用的sqlHelper.cs(部分功能实现):

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;

namespace WebApplication1.WebHelper
{
    public static class SqlHelper
    {
        //取得连接字符串
        public static readonly string connString = ConfigurationManager.ConnectionStrings["defaultConnString"].ConnectionString;
        //sql操作过程:打开连接-->创建命令-->给sql语句-->执行语句-->处理结果
        public static int ExecuteNonQuery(string sql)
        {
            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    //返回执行sql语句影响的行数
                    return cmd.ExecuteNonQuery();
                }
            }
        }
        public static object ExecuteScalar(string sql)
        {
            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    return cmd.ExecuteScalar();
                }
            }
        }

        //只用来执行查询结果比较少的sql
        public static DataSet ExecuteDataSet(string sql) 
        {
            //方法1
            //using (SqlConnection conn = new SqlConnection(connString))
            //{
            //    conn.Open();
            //    using (SqlCommand cmd = conn.CreateCommand())
            //    {
            //        cmd.CommandText = sql;
            //        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            //        DataSet ds = new DataSet();
            //        adapter.Fill(ds);
            //        return ds;
            //    }
            //}

            //方法2
            using (SqlConnection conn = new SqlConnection(connString))
            {
                SqlCommand cmd = new SqlCommand();
                PrepareCommand(cmd,conn,sql);
                using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
                {
                    DataSet ds = new DataSet();
                    adapter.Fill(ds);
                    return ds;
                } ;
            }
           
        }

        public static void PrepareCommand(SqlCommand cmd,SqlConnection conn, string sql)
        {
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            cmd.Connection = conn;
            cmd.CommandText = sql;
        }
    }
}
sqlhelper.cs

 

  

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:.NET 同步与异步之锁(ReaderWriterLockSlim)(八)

下一篇:【DirectX】 AudioVideoPlayback 中的事件BUG