데이터 베이스 MySQL 튜토리얼 教你如何来进行编写通用的数据访问_MySQL

教你如何来进行编写通用的数据访问_MySQL

Jun 01, 2016 pm 01:53 PM
어떻게 섬기는 사람 사용자

引言

  在负责咨询工作的过去 6 年中,我曾多次听说关于数据访问和操作方面的问题,它时刻困扰着用户:“如何编写应用程序,以便只需对其进行很少的改动或不进行改动即可使用数据库服务器 x、y 和 z?”由于知道数据访问层仍然是现代应用程序的最关键部分,并且通常是经验不足的开发人员的头号敌人,因此我的第一反应始终是:根本办不到!

  面对着人们惶惶不安的面孔以及“使用 Microsoft 在 ADO 中提供的通用数据访问方法如何?”这样的问题,我决定针对此问题提供更详细的说明以及建议的解决方案。

  问题在于,如果应用程序是较小的原型,或者如果并发用户较少并且数据访问逻辑比较简单,那么即使您选择下面这些最简单的方法,也不会遇到任何问题:使用 RAD 工具(如 Data Environment in Microsoft® Visual Basic® 6.0),或某些“一揽子”解决方案(如 ActiveX® Data Control 和其他第三方组件),这些解决方案通常会隐藏应用程序与特定数据源之间进行的复杂交互。然而,当用户数量增加使得必须解决并发操作问题时,由于频繁使用动态记录集、服务器端光标以及不必要的锁定策略,导致出现许多性能问题。为达到用户目标而必须对系统所做的设计和代码更改将花费您大量的时间,因为您从开始时就没有考虑过这一问题。

  使用通用数据访问方法

  在将 ADO 可靠地并入 MDAC(Microsoft Data Access Components 2.1 版)后,Microsoft 掀起了通用数据访问的使用高潮。其主导思想是向开发人员展示,通过使用简单的对象模型(“连接”、“命令”和“记录集”),可以编写出能够与各种不同的数据源(无论是关系数据源还是非关系数据源)连接的应用程序。文档(以及当时的大多数文章和示例)中通常未曾提及的是,即使使用相同的数据访问技术,各种数据源的可编程性和特征也千差万别。

  其结果是,在需要从多个数据源获取数据的应用程序中,最简单的方法是使用所有数据源所提供的功能的“共同点”,但因此会失去使用数据源特定选项的好处,即为访问和操作各种 RDBMS 中的信息提供最佳方法。

  我对该方法始终存在的怀疑是,经过与我的客户进行更详细的分析后,我们通常一致认为与应用程序中处理显示和业务逻辑的其他部分相比,与数据源进行交互的只是应用程序很小的一部分。通过进行精心的模块化设计,可以将 RDBMS 特定代码隔离在一些容易互换的模块中,从而避免对数据访问使用“通用”方法。然而,我们可以使用非常特定的数据访问代码(根据数据源的不同,使用存储过程、命令批处理和其他特性),而不触及其他大多数应用程序代码。这总是提醒大家:正确的设计是编写可移植的有效代码的关键。

    ADO.NET 将一些重要的变化引入到数据访问编码领域,如专用 .NET 数据提供程序这样的概念。使用特定的提供程序,可以绕过为数众多但有时没必要的一系列软件接口和服务(它们是 OLE DB 和 ODBC 层在数据访问代码与数据库服务器之间插入的内容),从而以最佳方式连接到数据源。但每个数据源仍然存在不同的特征和特性(具有不同的 SQL Dialect),且编写高效的应用程序仍然必须使用这些特定特征而不是“共同点”。从可移植性观点看来,托管和非托管的数据访问技术仍然非常类似。

  除“利用数据源的唯一特征”外,编写良好数据访问层所必需的其他规则对每个数据源通常都是相同的:

  • 在可能的情况下使用连接池机制。

  • 节约使用数据库服务器的有限资源。

  • 注意网络的往返。

  • 在适当的情况下,增强执行计划的重复使用率并避免重复编译。

  • 使用适当的锁定模型管理并发性。

  从我使用模块化设计方法的个人经验来看,整个应用程序中专用于处理特定数据源的代码量不会超过总量的 10%。显而易见,这比仅仅更改配置文件中的连接字符串更复杂,但我认为,这样做会获得性能收益,因此这是一个可接受的折衷办法。

  使用基本接口

  此处的目标是使用抽象,并将特定于特殊数据源的代码封装在类层中,从而使应用程序的其他部分独立于后端数据库服务器或免受其影响。

  .NET Framework 的面向对象这一特性将在该过程中为我们提供帮助,使我们能够选择要使用的抽象级别。选项之一是使用每个 .NET 数据提供程序都必须实现的基本接口(IDbConnection、IDbCommand、IDataReader 等)。另一个选项是创建一组类(数据访问层),用于管理应用程序的所有数据访问逻辑(例如,使用 CRUD 范例)。为检查这两种可能性,我们首先从基于 Northwind 数据库的订单输入应用程序示例入手,然后插入和检索不同数据源中的信息。

  数据提供程序基本接口标识应用程序与数据源进行交互通常所需的典型行为:

  • 定义连接字符串。

  • 打开和关闭与数据源的物理连接。

  • 定义命令和相关参数。

  • 执行可以创建的不同种类的命令。

  • 返回一组数据。

  • 返回标量值。

  • 对数据执行操作但不返回任何内容。

  • 对返回的数据集提供只向前型访问和只读型访问。

  • 定义使数据集与数据源(数据适配器)的内容保持同步所需的一组操作。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Xiaohongshu 계정을 사용하여 사용자를 찾는 방법은 무엇입니까? 내 휴대폰 번호를 찾을 수 있나요? Xiaohongshu 계정을 사용하여 사용자를 찾는 방법은 무엇입니까? 내 휴대폰 번호를 찾을 수 있나요? Mar 22, 2024 am 08:40 AM

소셜 미디어의 급속한 발전으로 Xiaohongshu는 가장 인기 있는 소셜 플랫폼 중 하나가 되었습니다. 사용자는 Xiaohongshu 계정을 만들어 자신의 개인 신원을 표시하고 다른 사용자와 소통하고 상호 작용할 수 있습니다. 사용자의 Xiaohongshu 번호를 찾으려면 다음의 간단한 단계를 따르세요. 1. Xiaohongshu 계정을 사용하여 사용자를 찾는 방법은 무엇입니까? 1. Xiaohongshu 앱을 열고 오른쪽 하단에 있는 "검색" 버튼을 클릭한 다음 "메모" 옵션을 선택합니다. 2. 노트 목록에서 찾고자 하는 사용자가 게시한 노트를 찾아보세요. 클릭하시면 메모 세부정보 페이지로 이동합니다. 3. 노트 상세페이지에서 해당 사용자의 아바타 아래 '팔로우' 버튼을 클릭하여 해당 사용자의 개인 홈페이지로 진입합니다. 4. 이용자 개인 홈페이지 우측 상단의 점 3개 버튼 클릭 후 '개인정보' 선택

Windows 11에서 사진 앱 오류에 대한 변경 사항을 저장할 수 없습니다. Windows 11에서 사진 앱 오류에 대한 변경 사항을 저장할 수 없습니다. Mar 04, 2024 am 09:34 AM

Windows 11에서 이미지 편집을 위해 사진 앱을 사용하는 동안 변경 내용을 저장할 수 없습니다. 오류가 발생하는 경우 이 문서에서 해결 방법을 제공합니다. 변경사항을 저장할 수 없습니다. 저장하는 동안 오류가 발생했습니다. 나중에 다시 시도해 주세요. 이 문제는 일반적으로 잘못된 권한 설정, 파일 손상 또는 시스템 오류로 인해 발생합니다. 그래서 우리는 이 문제를 해결하고 Windows 11 장치에서 Microsoft 사진 앱을 계속해서 원활하게 사용할 수 있도록 심층적인 연구를 수행하고 가장 효과적인 문제 해결 단계 중 일부를 정리했습니다. Windows 11에서 사진 앱 오류에 대한 변경 사항을 저장할 수 없는 문제 수정 많은 사용자가 다른 포럼에서 Microsoft 사진 앱 오류에 대해 이야기해 왔습니다.

형식이 지원되지 않거나 파일이 손상되었기 때문에 포토에서 이 파일을 열 수 없습니다. 형식이 지원되지 않거나 파일이 손상되었기 때문에 포토에서 이 파일을 열 수 없습니다. Feb 22, 2024 am 09:49 AM

Windows에서 사진 앱은 사진과 비디오를 보고 관리하는 편리한 방법입니다. 이 애플리케이션을 통해 사용자는 추가 소프트웨어를 설치하지 않고도 멀티미디어 파일에 쉽게 액세스할 수 있습니다. 그러나 때때로 사용자는 사진 앱을 사용할 때 "지원되지 않는 형식이므로 이 파일을 열 수 없습니다."라는 오류 메시지가 표시되거나 사진이나 비디오를 열려고 할 때 파일이 손상되는 등 몇 가지 문제가 발생할 수 있습니다. 이러한 상황은 사용자에게 혼란스럽고 불편할 수 있으므로 문제를 해결하려면 몇 가지 조사와 수정이 필요합니다. 사용자가 사진 앱에서 사진이나 비디오를 열려고 하면 다음 오류가 표시됩니다. 죄송합니다. 해당 형식이 현재 지원되지 않거나 파일이 아니기 때문에 포토에서 이 파일을 열 수 없습니다.

Apple Vision Pro를 PC에 연결하는 방법 Apple Vision Pro를 PC에 연결하는 방법 Apr 08, 2024 pm 09:01 PM

Apple Vision Pro 헤드셋은 기본적으로 컴퓨터와 호환되지 않으므로 Windows 컴퓨터에 연결되도록 구성해야 합니다. Apple Vision Pro는 출시 이후 큰 인기를 끌었으며, 최첨단 기능과 광범위한 조작성을 통해 그 이유를 쉽게 알 수 있습니다. PC에 맞게 일부 조정할 수 있지만 기능은 AppleOS에 크게 의존하므로 기능이 제한됩니다. AppleVisionPro를 내 컴퓨터에 어떻게 연결합니까? 1. 시스템 요구 사항 확인 최신 버전의 Windows 11이 필요합니다. (Custom PC 및 Surface 장치는 지원되지 않습니다.) 64비트 2GHZ 이상 빠른 프로세서 지원 고성능 GPU, 대부분

슈퍼유저로 Ubuntu에 로그인 슈퍼유저로 Ubuntu에 로그인 Mar 20, 2024 am 10:55 AM

Ubuntu 시스템에서는 루트 사용자가 일반적으로 비활성화되어 있습니다. 루트 사용자를 활성화하려면 passwd 명령을 사용하여 비밀번호를 설정한 다음 su- 명령을 사용하여 루트로 로그인할 수 있습니다. 루트 사용자는 무제한 시스템 관리 권한을 가진 사용자입니다. 그는 파일, 사용자 관리, 소프트웨어 설치 및 제거, 시스템 구성 변경에 액세스하고 수정할 수 있는 권한을 가지고 있습니다. 루트 사용자와 일반 사용자 사이에는 분명한 차이가 있습니다. 루트 사용자는 시스템에서 가장 높은 권한과 더 넓은 제어 권한을 갖습니다. 루트 사용자는 일반 사용자가 할 수 없는 중요한 시스템 명령을 실행하고 시스템 파일을 편집할 수 있습니다. 이 가이드에서는 Ubuntu 루트 사용자, 루트로 로그인하는 방법, 일반 사용자와 어떻게 다른지 살펴보겠습니다. 알아채다

MS 그림판이 Windows 11에서 제대로 작동하지 않습니다. MS 그림판이 Windows 11에서 제대로 작동하지 않습니다. Mar 09, 2024 am 09:52 AM

Microsoft Paint가 Windows 11/10에서 작동하지 않습니까? 글쎄, 이것은 일반적인 문제인 것 같으며 우리는 이를 해결할 수 있는 몇 가지 훌륭한 솔루션을 가지고 있습니다. 사용자들은 MSPaint를 사용하려고 할 때 작동하지 않거나 열리지 않는다고 불평해 왔습니다. 앱의 스크롤바가 작동하지 않고, 붙여넣기 아이콘이 표시되지 않고, 충돌이 발생하는 등의 현상이 발생합니다. 다행히 Microsoft 그림판 앱 관련 문제를 해결하는 데 도움이 되는 가장 효과적인 문제 해결 방법 중 일부를 수집했습니다. Microsoft 그림판이 작동하지 않는 이유는 무엇입니까? MSPaint가 Windows 11/10 PC에서 작동하지 않는 몇 가지 이유는 다음과 같습니다. 보안 식별자가 손상되었습니다. 정지 시스템

iPhone에서 Shazam 앱이 작동하지 않음: 수정 iPhone에서 Shazam 앱이 작동하지 않음: 수정 Jun 08, 2024 pm 12:36 PM

iPhone의 Shazam 앱에 문제가 있나요? Shazam은 노래를 듣고 노래를 찾는 데 도움을 줍니다. 하지만 Shazam이 제대로 작동하지 않거나 노래를 인식하지 못하는 경우 수동으로 문제를 해결해야 합니다. Shazam 앱을 복구하는 데 시간이 오래 걸리지 않습니다. 따라서 더 이상 시간을 낭비하지 않고 아래 단계에 따라 Shazam 앱 문제를 해결하세요. 수정 1 – 굵은 텍스트 기능 비활성화 iPhone의 굵은 텍스트로 인해 Shazam이 제대로 작동하지 않을 수 있습니다. 1단계 – iPhone 설정에서만 이 작업을 수행할 수 있습니다. 그러니 열어보세요. 2단계 – 다음으로 "디스플레이 및 밝기" 설정을 엽니다. 3단계 - "굵은 텍스트"가 활성화된 경우

sudo란 무엇이며 왜 중요한가요? sudo란 무엇이며 왜 중요한가요? Feb 21, 2024 pm 07:01 PM

sudo(수퍼유저 실행)는 일반 사용자가 루트 권한으로 특정 명령을 실행할 수 있도록 하는 Linux 및 Unix 시스템의 핵심 명령입니다. sudo의 기능은 주로 다음 측면에 반영됩니다. 권한 제어 제공: sudo는 사용자에게 일시적으로 수퍼유저 권한을 얻을 수 있는 권한을 부여하여 시스템 리소스와 민감한 작업을 엄격하게 제어합니다. 일반 사용자는 필요할 때만 sudo를 통해 임시 권한을 얻을 수 있으며, 항상 슈퍼유저로 로그인할 필요는 없습니다. 향상된 보안: sudo를 사용하면 일상적인 작업 중에 루트 계정을 사용하지 않아도 됩니다. 모든 작업에 루트 계정을 사용하면 올바르지 않거나 부주의한 작업에는 전체 권한이 부여되므로 예기치 않은 시스템 손상이 발생할 수 있습니다. 그리고

See all articles