`

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知识点梳理

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

    总结了ADO.net的所有知识点,相关对象中的属性及其方法,还有各个对象的用法流程,详细操作步骤,对于对ADO.Net初学者有很大价值。

    ADO.NET考核知识点

    知识点:第一范式(1NF);第二范式(2NF);第三范式(3NF);存储过程(StoredProcedure);ADO.NET概述;字符串的存储(App.config,Web.config);非编程方式对配置文件的各区段进行加密(推荐);打开和关闭连接;连接池...

    ADO.NET主要知识点总结资料

    ADO.NET主要知识点总结资料ADO.NET主要知识点总结资料ADO.NET主要知识点总结资料

    ADO.NET 2.0技术内幕(高清 中文 带书签 全)

    本书可以使您的专业知识不再停留在基础阶段,它会引领您深入研究ADO.NET 2.0的重要编程主题。本书作为全面的技术内幕参考书,提供了专家指南、实用指令及用Visual c#和Visual Basic编写的代码示例,帮助您深入掌握...

    Ado.net总结知识点

    可以给那些初学Ado.net的朋友更好的理解

    ADO.NET重要知识点查询

    ASP开发过程中的一些问题解决办法以及一些ASP的技巧,非常有用哦,你可以根据自己的需要学习其中的知识点

    ASP.NET应用开发案例教程——基于MVC模式的ASP.NET+c#+ADO.NET 课件

    全书论述了ASP.NET开发概述、C#及ADO.NET背景知识、ASP.NET Web窗体的基本控件、数据控件和数据绑定技术、用户控件和自定义控件、ASP.NET内置对象和缓存技术、ASP.NET应用程序配置及编译和部署、ASP.NET与Web服务、...

    ADO.NET基础_使用ADO.NET访问和操作数据库

    ADO.NET基础_使用ADO...※开始本章的学习之前,你需要回顾和掌握的知识点: 1.ADO.NET两大核心组件是什么? .NET Framework数据提供程序和DataSet数据集 2..NET Framework数据提供程序中的四大核心对象有哪些? 在SQ

    下部分课件 ASP.NET应用开发案例教程——基于MVC模式的ASP.NET+c#+ADO.NET 课件

    全书论述了ASP.NET开发概述、C#及ADO.NET背景知识、ASP.NET Web窗体的基本控件、数据控件和数据绑定技术、用户控件和自定义控件、ASP.NET内置对象和缓存技术、ASP.NET应用程序配置及编译和部署、ASP.NET与Web服务、...

    winform开发(ADO.Net部分)

    本文件涵盖了ADO.NET大部分知识,包括数据库连接,数据的查询和修改等知识点,全面而且实用,有需要的朋友可以下载!

    C#可视化二:ADO.NET基础

    知识点一:ADO.NET 简介 为什么需要ADO.NET 这门技术,C#程序需要访问数据库中的数据 微软公司提供的访问数据库技术,是.NET Framework中负责数据访问类库集,是应用程序和数据源之间的桥梁(不填充就没有数据) ...

    ASP.NET基础知识ppt

    ASP.NET基础知识ppt,包括DOM,DotNet,ADO.NET等

    C#使用简单三层实现获取本地计算机硬件信息以及使用ADO.net操作数据库、用户权限控制、条件筛选、Excel导出、单例模式等功能

    2、ADO.NET对数据库的操作 3、单例模式 4、C#中的API获取计算机硬件信息 5、用户权限控制 6、NPOI导出数据到Excel 7、数据的条件筛选 ...... 这个demo比较适合新手参考、用到的知识点比较广、希望对新手有一点的帮助

    asp.net知识库

    ADO.NET 2.0 大批量数据操作和多个动态的结果集 ADO.NET 2.0 异步处理 在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET 2.0 绑定高级技巧 简单实用的DataSet更新数据库的类+...

    Asp.net夜话

    NET企业开发的多个层面,主要知识点包括:表单知识、.NET运行机制、Visual Studio 2008技巧、ASP.NET服务器控件的使用、SQL注入防范、单元测试、三层架构、报表、数据加密/解密、GDI+、ADO.NET、分布式开发、AJAX...

    使用ADO .Net , winform制作做的模仿QQ的即时通讯(VS2008+SQL2005)

    该项目是小弟花了一周左右的时间完成,里面包含了QQ的:登录、注册、添加/查找好友功能、修改好友信息(包括修改密码和头像),以及聊天功能和系统提示声音、头像闪烁等等,包含了很多的知识点,比如对传参的熟练运用...

    《ASP.NET 4 权威指南》pdf版

    查询、LINQ 与ADO.NET 和XML,以及ADO.NET 实体框架等;第三部分深入浅出地讲解了开发一个Web 站 点必须掌握的各种知识点、流程和方法;第四部分是本书的高级话题,分析了ASP.NET 状态管理、自定 义服务器控件、ASP...

    ASP.NET4权威指南源代码下载

    第二部分详尽地讲解了ASP.NET访问的所有细节,包括数据管理、数据控件绑定与操作、GridView控件、LINQ查询、LINQ与ADO.NET和XML,以及ADO.NET实体框架等;第三部分深入浅出地讲解了开发一个Web站点必须掌握的各种...

    MFC应用程序在.NET框架下的扩展

    为了让读者透彻理解如何运用.NET框架来扩展MFC程序,作者为每个知识点配备了演示程序并提供了实用的项目创建指导和大量案例程序。 本书适合于具有MFC编程知识的程序员作为参考书,尤其适合致力于在MFC应用程序中运用...

Global site tag (gtag.js) - Google Analytics