백엔드 개발 C#.Net 튜토리얼 ado.net이란 무엇이며 간단한 구현 세부 사항

ado.net이란 무엇이며 간단한 구현 세부 사항

May 31, 2017 pm 02:32 PM

一、介绍

     ado.net是.net framework的数据提供程序,它主要有SqlConnection、SqlCommand、SqlDataAdapter、SqlDataReader和DataSet五大对象构成,结构如下图

1.SqlConnection类表示一个sql server数据库的一个连接    连接字符串格式一般有如下两种形式,具体参数可以参照msdn

               1)Persist Security Info=False;Integrated Security=true;Initial Catalog=Northwind;server=(local)               2)Server=.;Database=demodb;User=sa;Password=123;연결 문자열 형식은 일반적으로 다음 두 가지 형식을 갖습니다. 매개변수는 msdn을 참조할 수 있습니다.

    创建一个连接如下     

      SqlConnection

 conn =다음과 같이 연결을 생성하세요 new 

connString);  2.SqlCommand类表示数据库执行命令对象    SqlConnectionnew      

SqlCommand cmd =

  new   SqlCommand (); 1) 실행해야 하는 SQL 스크립트나 저장 프로시저, 타임아웃, 매개변수, 트랜잭션 등을 설정하는 데 사용합니다.

            cmd.CommandText =   "select * from table"   ; 2) 생성 방법은 다음과 같습니다.

            cmd.Connection = conn;           3)几个主要方法             ExecuteNonQuery:对连接执行sql语句并返回受影响行数,主要执行增、删和改操作 🎜 🎜🎜🎜 🎜 🎜🎜 🎜🎜🎜🎜🎜🎜🎜

🎜🎜

🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 conn.CreateCommand🎜🎜🎜

🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜

🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜

🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 cmd.CommandText =🎜🎜🎜🎜

🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜 cmd.Connection = conn🎜

🎜 🎜 🎜 🎜 🎜 3 ) 여러 가지 주요 메서드

🎜 🎜 🎜 🎜 🎜🎜🎜ExecuteNonQuery: 연결에서 SQL 문을 실행하고 영향을 받은 행 수를 반환하며 주로 추가, 삭제 및 작업 수정

            ExecuteReader:执行查询返回SqlDataReader对象

            ExecuteScalar:执行查询返回结果集中的第一行和第一列    

     3.SqlDataAdapter类用来填充DataSet和更新数据库数据命令和数据库连接

          该类有4种构造函数如下           이 클래스에는 다음과 같은 4개의 생성자가 있습니다.

public SqlDataAdapter();         스팬 >

public  SqlDataAdapter(SqlCommand selectCommand);         

public SqlDataAdapter(string selectCommandText, SqlConnection selectConnection);        

public SqlDataAdapter(string selectCommandText, string selectConnectionString);     4.SqlDataReader

类提供一种数据流只进方式读取     5.DataSet

类表示数据在内存中的缓存二、ADO.NET简单实现     下面实现一个增、删、改、查的例子

public class EasySqlHelper
    {
        //web.config来配置
        //private static string connString = ConfigurationManager.AppSettings["SqlConnectionString"];
        private static string connString = "Server=.;Database=demodb;User=sa;Password=123;";

        public static int ExecuteNonQuery(string sql)
        {
            using (SqlConnection conn = new SqlConnection(connString))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    return cmd.ExecuteNonQuery();
                }
            }
        }

        public static SqlDataReader ExecuteReader(string sql)
        {
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataReader rdr = null;

            try
            {
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }

                rdr = cmd.ExecuteReader();
            }
            catch (SqlException ex)
            {
                conn.Dispose();
                cmd.Dispose();

                if (rdr != null)
                {
                    rdr.Dispose();
                }

                throw ex;
            }
            finally
            {
                cmd.Dispose();
            }

            return rdr;
        }

        public static DataTable ExecuteDataTable(string sql)
        {
            using (SqlConnection conn = new SqlConnection(connString))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    SqlDataAdapter adp = new SqlDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    adp.Fill(ds);

                    return ds.Tables[0];
                }
            }
        }
    }
로그인 후 복사

  上面代码中使用using来确保资源释放,所有实现IDisposable接口的类都可以用using来释放,即使在调用对象的方法上发生异常也会释放。다음은 추가, 삭제, 수정, 확인 예시입니다


三、创建不同提供程序的数据源类实例

     上面代码只对sql server有效,如果要实现不同数据库如oracle则又需要另外写一套代码,.Net提供了DbProviderFactory类来创建不同数据库实例。

     同时上面5大对象也要换成DbConnection、DbCommand、DbDataReader、DbDataAdapter把具体sql server对象抽象成更具体和数据库类型无关对象。

//// <summary>
    /// 连接信息
    /// </summary>
    public class ConnectionInfo
    {
        private string _connectionString;
        private string _providerName;

        /// <summary>
        /// 连接字符串
        /// </summary>
        public string ConnectionString
        {
            get { return _connectionString; }
        }

        /// <summary>
        /// 提供程序的固定名称
        /// </summary>
        public string ProviderName
        {
            get { return _providerName; }
        }

        public ConnectionInfo(string connectionString, string providerName)
        {
            _connectionString = connectionString;
            _providerName = providerName;
        }
    }

    public class MySqlHelper
    {
        private static DbProviderFactory dbProvider;

        private static readonly ConnectionInfo connInfo = new ConnectionInfo("Server=.;Database=demodb;User=sa;Password=123;", "System.Data.SqlClient");

        private static void GetProvider()
        {
            dbProvider = DbProviderFactories.GetFactory(connInfo.ProviderName);
        }

        static MySqlHelper()
        {
            GetProvider();
        }

        public static int ExecuteNonQuery(string sql, DbParameter[] parameters)
        {
            int flag = 0;

            using (DbConnection conn = dbProvider.CreateConnection())
            {
                conn.ConnectionString = connInfo.ConnectionString;
                conn.Open();

                using (DbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;

                    if (parameters != null && parameters.Length > 0)
                    {
                        cmd.Parameters.AddRange(parameters);
                    }

                    flag = cmd.ExecuteNonQuery();
                }
            }

            return flag;
        }

        public static void ExecuteReader(string sql, DbParameter[] parameters, Action<IDataReader> action)
        {
            IDataReader rdr = null;
            
            using (DbConnection conn = dbProvider.CreateConnection())
            {
                conn.ConnectionString = connInfo.ConnectionString;
                conn.Open();

                using (DbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;

                    if (parameters != null && parameters.Length > 0)
                    {
                        cmd.Parameters.AddRange(parameters);
                    }

                    rdr = cmd.ExecuteReader();

                    action(rdr);

                    rdr.Close();
                }
            }
        }

        public static DataTable ExecuteDataTable(string sql, DbParameter[] parameters)
        {
            DataTable dt = null;

            using (DbConnection conn = dbProvider.CreateConnection())
            {
                conn.ConnectionString = connInfo.ConnectionString;
                conn.Open();

                using (DbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;

                    if (parameters != null && parameters.Length > 0)
                    {
                        cmd.Parameters.AddRange(parameters);
                    }

                    IDataReader rdr = cmd.ExecuteReader();

                    dt = new DataTable();
                    dt.Load(rdr);

                    rdr.Close();
                    
                }

                return dt;
            }
        }
    }
로그인 후 복사
위 코드는 SQL Server에만 유효합니다. oracle과 같은 다른 데이터베이스를 구현하려면 .Net에서 생성할 다른 코드 세트를 작성해야 합니다. 다른 데이터베이스 인스턴스.

四、其它第三方框架동시에 위의 5개 주요 개체도 DbConnection, DbCommand, DbDataReader 및 DbDataAdapter로 대체되어 특정 SQL Server 개체를 더 많은 개체로 추상화해야 합니다. 데이터베이스 유형과 관련이 없는 특정 개체입니다.


  有Dapper、IBatis.Net等等,可以参考学习下

【相关推荐】

1. 

ASP.NET免费视频教程

p>

1.2. C#使用Ado.Net更新和添加数据到Excel表格的方法

2 .3. ADO.NET 读取EXCEL的实现代码((c#))

3.4. ADO.NET调用存储过程

4.5. ado.net 连接vs 数据库代码

5.🎜🎜

위 내용은 ado.net이란 무엇이며 간단한 구현 세부 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP를 통해 간단한 온라인 설문지 시스템을 작성하는 방법 PHP를 통해 간단한 온라인 설문지 시스템을 작성하는 방법 Sep 24, 2023 am 10:21 AM

PHP를 이용한 간단한 온라인 설문지 시스템 작성법 인터넷의 발전과 대중화로 인해 인터넷을 통해 다양한 설문조사와 설문지를 진행하는 경향이 늘어나고 있습니다. 이러한 요구를 충족시키기 위해 우리는 PHP 언어를 통해 간단한 온라인 설문지 시스템을 작성할 수 있습니다. 이 기사에서는 PHP를 사용하여 기본 설문지 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 데이터베이스 설계 먼저 설문지 관련 데이터를 저장할 데이터베이스를 설계해야 한다. MySQL 데이터를 사용할 수 있습니다

PHP를 사용하여 간단한 온라인 주문 시스템을 구현하는 방법 PHP를 사용하여 간단한 온라인 주문 시스템을 구현하는 방법 Sep 26, 2023 am 09:29 AM

PHP를 사용하여 간단한 온라인 주문 시스템을 구현하는 방법 인터넷의 인기로 인해 주문 산업은 점차 온라인으로 발전하고 있습니다. 사용자의 요구를 충족시키기 위해서는 온라인 주문 시스템의 개발이 매우 중요해졌습니다. 이 기사에서는 PHP 언어를 사용하여 간단한 온라인 주문 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 데이터베이스 구조 정의 먼저 주문 정보를 저장할 데이터베이스 구조를 정의해야 합니다. "orders"라는 데이터 테이블을 생성하고 다음 필드를 정의합니다. order_id: 주문 ID

PHP를 사용하여 간단한 제품 리뷰 기능을 개발하는 방법 PHP를 사용하여 간단한 제품 리뷰 기능을 개발하는 방법 Sep 21, 2023 am 08:49 AM

PHP를 사용하여 간단한 제품 리뷰 기능을 개발하는 방법 전자 상거래가 증가하면서 제품 리뷰 기능은 사용자와 소비자의 제품 평가 간의 의사소통을 촉진하는 데 필수적인 기능이 되었습니다. 이 기사에서는 PHP를 사용하여 간단한 제품 리뷰 기능을 개발하는 방법을 소개하고 구체적인 코드 예제를 첨부합니다. 데이터베이스 생성 먼저, 제품 리뷰 정보를 저장할 데이터베이스를 생성해야 합니다. "product_comments"라는 데이터베이스를 만들고 그 안에 "comment"라는 파일을 만듭니다.

PHP를 사용하여 간단한 온라인 주문 시스템을 구현하는 방법 PHP를 사용하여 간단한 온라인 주문 시스템을 구현하는 방법 Jun 27, 2023 pm 02:21 PM

오늘은 PHP 프로그래밍 언어를 사용하여 간단한 온라인 주문 시스템을 구현해 보겠습니다. PHP는 웹 기반 애플리케이션 개발에 이상적인 널리 사용되는 서버 측 스크립팅 언어입니다. PHP를 사용하여 사용자가 웹사이트에서 항목을 선택하고 장바구니에 추가하고 거래를 완료할 수 있는 간단한 주문 시스템을 만드는 방법을 보여 드리겠습니다. 시작하기 전에 새로운 PHP 프로젝트를 생성하고 데이터베이스, 서버 환경 등 필요한 종속성을 설치해야 합니다. 우리는 MySQ를 사용할 것이다

PHP를 이용하여 간단한 온라인 쇼핑몰을 구현하는 방법 PHP를 이용하여 간단한 온라인 쇼핑몰을 구현하는 방법 Sep 25, 2023 pm 02:25 PM

PHP를 사용하여 간단한 온라인 쇼핑몰을 구현하는 방법 인터넷의 발달로 전자상거래가 일반적인 쇼핑 방식이 되었습니다. 많은 사람들이 자신만의 온라인 상점을 구축하는 방법을 배우고 싶어합니다. 이 기사에서는 PHP 언어를 사용하여 간단한 온라인 쇼핑몰을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 환경 설정 먼저 로컬에서 PHP 개발 환경을 설정해야 합니다. 지루한 구성 작업을 피할 수 있는 통합 개발 환경을 구축하려면 XAMPP 또는 WAMP 도구를 사용하는 것이 좋습니다. 2. 데이터베이스 연결 생성

PHP를 사용하여 간단한 제품 비교 기능을 개발하는 방법 PHP를 사용하여 간단한 제품 비교 기능을 개발하는 방법 Sep 21, 2023 am 08:09 AM

PHP를 사용하여 간단한 상품 비교 기능을 개발하려면 특정 코드 예제가 필요합니다. 전자 상거래가 발달함에 따라 사용자는 어떤 브랜드를 선택하는 것이 더 좋은지, 어떤 매장이 좋은지 알 수 없는 등 쇼핑 시 제품을 선택하는 데 어려움을 겪는 경우가 많습니다. 가장 저렴한 가격 등. 이러한 문제를 해결하기 위해 우리는 사용자가 쉽게 제품의 속성을 비교하고 선택할 수 있도록 돕는 간단한 제품 비교 기능을 개발할 수 있습니다. 이 기사에서는 PHP를 사용하여 이 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저 제품을 만들어야 합니다.

PHP를 사용하여 간단한 온라인 인재 채용 시스템을 구현하는 방법 PHP를 사용하여 간단한 온라인 인재 채용 시스템을 구현하는 방법 Sep 26, 2023 pm 11:49 PM

PHP를 사용하여 간단한 온라인 인재 채용 시스템을 구현하는 방법 인재 채용은 기업 개발의 ​​중요한 부분입니다. 인터넷의 발전과 함께 점점 더 많은 회사가 채용 프로세스를 단순화하고 효율성을 높이기 위해 온라인 인재 채용 시스템을 채택하기 시작했습니다. 이 기사에서는 PHP 언어를 사용하여 간단한 온라인 인재 채용 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 요구사항 분석 온라인 인재채용 시스템을 구현하기 전에 먼저 시스템 요구사항을 명확히 할 필요가 있다. 간단한 인재 채용 시스템에는 일반적으로 다음과 같은 기능이 포함됩니다.

Java로 간단한 강좌 일정 관리 시스템을 설계하는 방법은 무엇입니까? Java로 간단한 강좌 일정 관리 시스템을 설계하는 방법은 무엇입니까? Nov 04, 2023 pm 03:32 PM

Java로 간단한 강좌 일정 관리 시스템을 설계하는 방법은 무엇입니까? 교육이 발전하고 강좌가 다양해짐에 따라 학교와 교육기관에서는 일일 강좌 편성과 조정을 처리하기 위한 효율적인 강좌 관리 시스템이 필요합니다. 널리 사용되는 프로그래밍 언어인 Java는 간단하고 실용적인 과정 일정 관리 시스템을 설계하고 개발할 수 있는 풍부한 도구와 라이브러리를 제공합니다. 커리큘럼 관리 시스템을 설계하기 전에 시스템의 기능적 요구 사항을 명확히 해야 합니다. 일반적으로 커리큘럼 관리 시스템은 다음 기능을 구현해야 합니다. 코스 관리

See all articles