`

ado.net 知识点

    博客分类:
  • .net
 
阅读更多

ado.net 知识点

一.ado.net 

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

二.ado.net中的几个对象

SqlConnection :构造数据库连接对象

SqlCommand :构造执行数据库命令的对象,需要制定数据库的连接对象SqlConnection ,CommandText 执行语句

SqlDataAdapter: 用来封装SqlCommand并取得DataSet

DataSet : 数据库返回的对象,已经存在内存中

SqlTransaction:事务

SqlParameter: SqlCommand的参数

SqlDataReader:提供一种从 SQL Server 数据库读取行的只进流的方式。无法继承此类。

三、SqlCommand下的几个方法

1.ExecuteScalar

执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行

2.ExecuteNonQuery

对连接执行 Transact-SQL 语句并返回受影响的行数

3.ExecuteReader 

SqlCommand.ExecuteReader (): 将 CommandText 发送到 Connection 并生成一个 SqlDataReader

SqlCommand.ExecuteReader (CommandBehavior) :将 CommandText 发送到 Connection,并使用 CommandBehavior 值之一生成一个 SqlDataReader

1)CommandBehavior 枚举

http://msdn.microsoft.com/zh-cn/library/system.data.commandbehavior(v=vs.80)

提供对查询结果和查询对数据库的影响的说明

CommandBehavior.CloseConnection 在执行该命令时,如果关闭关联的 DataReader 对象,则关联的 Connection 对象也将关闭。

四、SqlCommand下的几种属性

http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand_properties(v=vs.80)

1.CommandTimeout 获取或设置在终止执行命令的尝试并生成错误之前的等待时间

五、SqlTransaction

/// <summary>
        /// 执行多条SQL语句,实现数据库事务。
        /// </summary>
        /// <param name="SQLStringList">多条SQL语句</param>		
        public int ExecuteSqlTran(List<String> SQLStringList)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                SqlTransaction tx = conn.BeginTransaction();
                cmd.Transaction = tx;
                try
                {
                    int count = 0;
                    for (int n = 0; n < SQLStringList.Count; n++)
                    {
                        string strsql = SQLStringList[n];
                        if (strsql.Trim().Length > 1)
                        {
                            cmd.CommandText = strsql;
                            count += cmd.ExecuteNonQuery();
                        }
                    }
                    tx.Commit();
                    return count;
                }
                catch
                {
                    tx.Rollback();
                    return 0;
                }
            }
        }

 六、SqlParam

/// <summary>
        /// 执行带一个存储过程参数的的SQL语句。
        /// </summary>
        /// <param name="SQLString">SQL语句</param>
        /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
        /// <returns>影响的记录数</returns>
        public int ExecuteSql(string SQLString, string content)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand(SQLString, connection);
                System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
                myParameter.Value = content;
                cmd.Parameters.Add(myParameter);
                try
                {
                    connection.Open();
                    int rows = cmd.ExecuteNonQuery();
                    return rows;
                }
                catch (System.Data.SqlClient.SqlException e)
                {
                    throw e;
                }
                finally
                {
                    cmd.Dispose();
                    connection.Close();
                }
            }
        }

  七、SqlDataReader

http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldatareader(v=vs.80).aspx

 

若要创建 SqlDataReader,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不要直接使用构造函数。


在使用 SqlDataReader 时,关联的 SqlConnection 正忙于为 SqlDataReader 服务,对 SqlConnection 无法执行任何其他操作。除非调用 SqlDataReader 的 Close 方法,否则会一直处于此状态。


当 SqlDataReader 关闭后,只能调用 IsClosed 和 RecordsAffected 属性。尽管当 SqlDataReader 存在时可以访问 RecordsAffected 属性,但是请始终在返回 RecordsAffected 的值之前调用 Close,以保证返回精确的值。

 

/// <summary>
        /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
        /// </summary>
        /// <param name="strSQL">查询语句</param>
        /// <returns>SqlDataReader</returns>
        public SqlDataReader ExecuteReader(string strSQL)
        {
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand(strSQL, connection);
            try
            {
                connection.Open();
                SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                return myReader;
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                throw e;
            }   

        }

   八、IDataParameter[]

      IDataParameter[]简单的说来,就是可以包含任何数据库参数的数组,这些参数可以是SqlParameter或者OleDbParameter

九、存储过程

 

public SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlDataReader returnReader;
                connection.Open();
                SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
                command.CommandType = CommandType.StoredProcedure;
                returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
                return returnReader;
            }
        }
/// <summary>
        /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="storedProcName">存储过程名</param>
        /// <param name="parameters">存储过程参数</param>
        /// <returns>SqlCommand</returns>
        private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
        {
            SqlCommand command = new SqlCommand(storedProcName, connection);
            command.CommandType = CommandType.StoredProcedure;
            foreach (SqlParameter parameter in parameters)
            {
                if (parameter != null)
                {
                    // 检查未分配值的输出参数,将其分配以DBNull.Value.
                    if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                        (parameter.Value == null))
                    {
                        parameter.Value = DBNull.Value;
                    }
                    command.Parameters.Add(parameter);
                }
            }

            return command;
        }
/// <summary>
        /// 执行存储过程
        /// </summary>
        /// <param name="storedProcName">存储过程名</param>
        /// <param name="parameters">存储过程参数</param>
        /// <param name="tableName">DataSet结果中的表名</param>
        /// <returns>DataSet</returns>
        public DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                DataSet dataSet = new DataSet();
                connection.Open();
                SqlDataAdapter sqlDA = new SqlDataAdapter();
                sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
                sqlDA.Fill(dataSet, tableName);
                connection.Close();
                return dataSet;
            }
        }
 

 

 

 

  • 大小: 31 KB
分享到:
评论

相关推荐

    ADO.net所有知识点总结及用法

    ADO.NET是微软.NET框架下用于访问数据库的核心组件,它提供...以上就是ADO.NET的主要知识点和用法,掌握这些将有助于理解如何高效地访问和操作数据库。在实际开发中,还需要根据具体需求和场景灵活应用这些概念和技巧。

    C#快速入门与ado.net

    以下是一些关键的ADO.NET知识点: 1. **Connection对象**:建立与数据库的连接,是所有数据库操作的基础。 2. **Command对象**:执行SQL命令,如查询、插入、更新和删除记录。 3. **DataReader对象**:用于从数据库...

    ado.net面试题

    掌握这些知识点,对于理解和编写高效的ADO.NET 数据库应用程序至关重要。同时,了解从ADO 到ADO.NET 的演进,能够帮助开发者更好地理解新模型的设计理念,以及为什么在.NET 环境下,ADO.NET 是更优的选择。

    《ADO.NET专业项目实例开发》源代码

    在这些源代码中,你可以找到以下关键知识点: 1. **连接数据库**:ADO.NET通过`SqlConnection`类与SQL Server数据库建立连接。连接字符串是连接数据库的关键,包含服务器名、数据库名、用户名和密码等信息。 2. **...

    ADO_NET.rar_ADO_ADO .NET_visual c

    **ADO.NET知识点详解** 1. **ADO.NET概述**:ADO.NET是Microsoft开发的一种数据访问技术,它是.NET Framework的一部分,提供了一组类库,使得开发者可以高效、安全地访问和操作数据库。它支持多种数据库系统,如SQL...

    ADO.NET考核知识点

    ADO.NET考核知识点涵盖了数据库设计的基本原则、数据库操作、配置文件管理、异常处理、数据库访问以及数据处理等多个方面。以下是对这些知识点的详细说明: 1. **第一范式(1NF)**:数据库设计中的第一范式是关系...

    ADO.NET认证题库

    ADO.NET 认证题库知识点解读 ADO.NET 是微软推出的数据访问技术,广泛应用于数据库开发中。下面是根据提供的题库,总结出的 ADO.NET 相关知识点: 1. ADO.NET 模型中的 Connected 对象包括 Connection、...

    PPT ADO.NET课件

    本课件将深入探讨ADO.NET的相关知识点,包括但不限于以下内容: 1. 数据访问架构:ADO.NET采用面向对象的方式,通过Data Provider Model(数据提供程序模型)连接到各种数据库。它包括SQL Server、Oracle、ODBC和...

    ADO.NET认证试题

    ADO.NET 认证试题知识点总结 ADO.NET 认证试题涵盖了 ADO.NET 模型中的 Connected 对象、DataTable 对象的使用、XML 支持、.NET 数据提供程序、身份验证机制等多方面的知识点。 1. ADO.NET 模型中的 Connected ...

    ADO.NET 2.0试题 答案

    以下是一些ADO.NET 2.0的核心知识点: 1. **Connection对象**:它是与数据库建立连接的关键组件。在ADO.NET 2.0中,开发人员可以使用特定于数据库的数据提供程序(如SqlClient for SQL Server)来创建Connection...

    ADO.NET资料-demo程序

    在“ADO.NET简介.ppt”中,你可能会学到以下关键知识点: 1. ADO.NET架构:ADO.NET由几个主要组件组成,包括DataSet、DataTable、DataRow、DataAdapter、Connection、Command、DataReader等。DataSet是内存中的数据...

    ADO.Net[面试问题]面试题目

    ADO.NET是微软.NET框架的一部分,主要用于数据库访问和数据处理。它是连接应用程序与各种数据库系统的一种高效、灵活的技术。在面试中,对ADO.NET的理解和掌握是...熟练掌握这些知识点,将有助于你在面试中脱颖而出。

    ADO.NET 高级编程

    以上就是ADO.NET高级编程的一些关键知识点,涵盖了数据访问、操作和管理的核心概念。通过深入理解和实践,开发者可以更好地控制数据流程,创建高性能、安全的应用程序。在实际项目中,根据具体的业务需求和场景,...

    ADO.NET深入浅出

    最后,我们将回顾ADO.NET的关键知识点,提出一些最佳实践,以及在实际项目中如何选择合适的数据库访问策略。 通过这十二讲的学习,你将对ADO.NET有全面而深入的理解,能够自信地在.NET项目中运用这一强大的数据访问...

    ADO.NET 开发高手线上教学课程

    以下将详细解析ADO.NET的核心知识点,结合课程中可能涵盖的章节内容进行深入探讨。 1. **数据访问基础**:课程可能首先介绍数据访问的基础概念,包括数据库连接、命令执行和结果集处理。ADO.NET通过Connection对象...

    ADO.NET教学PPT

    总的来说,"ADO.NET教学PPT"会系统地涵盖这些知识点,并可能通过实例演示如何使用ADO.NET进行数据库操作,帮助开发者提升在.NET环境中处理数据库的能力。通过学习这份资料,开发者可以更好地理解和运用ADO.NET,从而...

    asp.net ADO.NET5

    在ASP.NET ADO.NET5这个主题中,我们可以深入探讨以下几个关键知识点: 1. **ASP.NET MVC框架**:ASP.NET提供了多种模式,如Web Forms、MVC和Web API。MVC(Model-View-Controller)是一种设计模式,它将业务逻辑、...

    ADO.NET自己封装SqlHelper类

    下面我们将详细讨论如何使用C#语言封装一个SqlHelper类,以及其核心知识点。 首先,我们要理解ADO.NET的基础组件:Connection(连接)、Command(命令)、DataAdapter(数据适配器)和DataSet(数据集)。SqlHelper...

    电影院售票系统源码(完成) [ADO.NET]

    项目中可能涉及到的其他ADO.NET知识点: 1. 数据连接:ADO.NET通过`SqlConnection`(对于SQL Server)或其他数据库提供商类建立与数据库的连接,进行数据操作。 2. 命令对象:使用`SqlCommand`执行SQL语句,如查询...

Global site tag (gtag.js) - Google Analytics