• 検索結果がありません。

ADO.NETの概要

ドキュメント内 NetCOBOL for .NET 応用編 (ページ 133-141)

第5章   データアクセス

5.2 ADO.NETクラスライブラリでの

5.2.1 ADO.NETの概要

A D O . N E Tは 、. N E T F r a m e w o r kで 提 供 さ れ る デ ー タ ア ク セ ス 機 能 を 提 供 し ま す 。A D O . N E Tは 非 常 に 多 機 能 で 、 様 々 な 種 類 の デ ー タ に ア ク セ ス す る こ と が で き ま す 。 ま た 、 接 続 を 受 け 持 つ 部 分 と デ ー タ の 操 作 を 受 け 持 つ 部 分 が 分 離 さ れ て お り 、 デ ー タ の 種 類 に 依 存 し た プ ロ グ ラ ミ ン グ を 行 う 必 要 が ほ と ん ど あ り ま せ ん 。

ま た 、A D O . N E Tは 、Wi n d o w sア プ リ ケ ー シ ョ ン やWe bア プ リ ケ ー シ ョ ン の コ ン ト ロ ー ル と 簡 単 に 連 携 す る こ と が 可 能 で 、 プ ロ グ ラ ミ ン グ の 量 を 減 ら す こ と が 可 能 で す 。

従 来 の デ ー タ 操 作 は 、 常 に 接 続(セ ッ シ ョ ン)を ベ ー ス に 行 わ れ て き ま し た 。 し か し 、 ク ラ イ ア ン ト と の 接 続 が ペ ー ジ 単 位 で 切 断 さ れ る の が 通 常 のWe bシ ス テ ム や 、We bサ ー ビ ス( S O A P )と よ ば れ る コ ン ポ ー ネ ン ト 間 の 結 合 が 緩 や か な 処 理 方 式 な ど が 広 ま る に つ れ 、 接 続 を 維 持 す る 形 式 の デ ー タ ア ク セ ス 方 式 に 無 理 が 生 じ る よ う に な り ま し た 。

.NET Framework

ADO.NET マネージコード

.NET Framework データプロバイダ

データソース

DataAdapter

XML文書 DataSet

Command DataReader

Connection

図 5 . 2 . 1   A D O . N E T の 2 つ の コ ン ポ ー ネ ン ト  

A D O . N E Tは 、. N E T F r a m e w o r k デ ー タ プ ロ バ イ ダ と い う デ ー タ ソ ー ス へ の 処 理 を 受 け 持 つ コ ン ポ ー ネ ン ト と 、 デ ー タ セ ッ ト( D a t a S e t )と い う デ ー タ ソ ー ス と の 接 続 に 依 存 し な い コ ン ポ ー ネ ン ト に 分 離 さ れ て お り 、 We bシ ス テ ム やWe bサ ー ビ ス に 最 適 な デ ー タ ア ク セ ス の た め の 方 式 で す 。

„ . N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ

. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ は 、 デ ー タ ソ ー ス と の 接 続 と 比 較 的 簡 単 な デ ー タ ア ク セ ス 機 能 お よ びD a t a S e tと の 橋 渡 し の 役 割 が あ り ま す 。

„ D a t a S e t

D a t a S e tは 、 デ ー タ を 格 納 す る い わ ば 箱 と 、 デ ー タ に ア ク セ ス す る た

め の 豊 富 な 機 能 が 提 供 さ れ る コ ン ポ ー ネ ン ト で す 。 デ ー タ ベ ー ス と の 接 続 部 分 は 、. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ の 役 割 で あ り 、D a t a S e tは デ ー タ ベ ー ス の 種 類 に 依 存 し ま せ ん 。

な お 、A D O . N E Tは 、 デ ー タ ベ ー ス 以 外 に も 、X M Lフ ァ イ ル や テ キ ス ト フ ァ イ ル な ど 、 さ ま ざ ま な デ ー タ に ア ク セ ス で き る た め 、 ア ク セ ス す る 対 象 の デ ー タ を デ ー タ ソ ー ス と 呼 ん で い ま す 。

5.2.2 NetCOBOL for .NETとADO.NET 

N e t C O B O L f o r . N E Tか らA D O . N E Tを 利 用 す る 場 合 、 埋 込 みS Q Lを 利 用 す る 方 法 とA D O . N E Tク ラ ス ラ イ ブ ラ リ を 利 用 す る 方 法 が あ り ま す 。 埋 込 みS Q Lを 利 用 す る 方 法 は 、 「5 . 3 埋 込 みS Q Lで の デ ー タ ア ク セ ス 」 を 参 照 し て く だ さ い 。 こ こ で は 、A D O . N E Tク ラ ス ラ イ ブ ラ リ を 利 用 す る 方 法 に つ い て 説 明 し ま す 。

A D O . N E Tク ラ ス ラ イ ブ ラ リ を 利 用 す る 場 合 、 手 続 き 型 のC O B O L文 法 で デ ー タ に ア ク セ ス す る 方 法 と は 異 な る た め 、 従 来 のC O B O L資 産 と の デ ー タ ア ク セ ス に 関 す る 互 換 性 が 失 わ れ ま す 。

逆 に 、Vi s u a l St u d i oの 他 の 言 語 と の 互 換 性 が 高 く な り ま す 。 例 え ば 、 V Bで 利 用 で き な いN e t C O B O L f o r . N E Tの デ ー タ を 、A D O . N E Tの デ ー タ( D a t a S e t )と し て 作 成 し な お し 、V Bに 渡 す な ど の 処 理 が 可 能 に な り ま す 。 ま た 、R E A D / W R I T Eや 埋 込 みS Q Lに な い 豊 富 なA D O . N E Tの 機 能 が 利 用 で き 、 接 続 で き る デ ー タ の 種 類 や 接 続 パ タ ー ン が 増 え る な ど 、 デ ー タ ア ク セ ス の 選 択 肢 が 増 え る の も 大 き な 利 点 で す 。

.NET Framework

VB.NET Webアプリケーション .NetCOBOL for .NET

クラスライブラリ

ADO.NET

DataSet

COBOLファイル など READ/WRITE

ADO.NET DataSet

クラスのパラメーターとして DataSetを受け渡す

図 5 . 2 . 2   D a t a S e t を 使 用 し た デ ー タ 連 携 イ メ ー ジ  

例 え ば 、 図 の 連 携 イ メ ー ジ で は 、We bア プ リ ケ ー シ ョ ン をV Bで 作 成 し 、 デ ー タ のC O B O Lフ ァ イ ル は ク ラ ス ラ イ ブ ラ リ 化 し たN e t C O B O L f o r . N E Tで ア ク セ ス し て い ま す 。We bア プ リ ケ ー シ ョ ン と ク ラ ス ラ イ ブ ラ リ 間 の デ ー タ の 連 携 にD a t a S e tを 使 用 し ま す 。D a t a S e tはWe bア プ リ ケ ー シ ョ ン の コ ン ト ロ ー ル と も 簡 単 に 連 携 で き る た め 、We bア プ リ ケ ー シ ョ ン 側 で 複 雑 な デ ー タ 処 理 を 行 う 必 要 は あ り ま せ ん 。

5.2.3 .NET Frameworkデータプロバイダの種類 

. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ は 、 プ ロ グ ラ ム と デ ー タ ソ ー ス を 結 ぶ 橋 渡 し を 行 い ま す 。 し た が っ て 、 デ ー タ ソ ー ス と の 接 続 方 法 や デ ー タ ソ ー ス の 種 類 ご と に 、4種 類 の. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ が 用 意 さ れ て い ま す 。 ま た 、O r a c l e社 な ど の デ ー タ ベ ー ス ベ ン ダ が 、 専 用 の. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ を 提 供 し て い る 場 合 も あ り ま す 。

次 に 、 各 デ ー タ プ ロ バ イ ダ の 特 徴 に つ い て 説 明 し ま す 。

Windows .NET Framework

ADO.NET .NET Framework

Data Provider

SQL Server

OLE DB対応 データソース for SQL Server

for OLE DB

for ODBC ODBC対応

データソース

for Oracle

Oracle

ODBC ドライバ

ネットワーク プログラム

ネットワーク プログラム OLE DB

プロバイダ

ODP.NET

Oracle Client

図 5 . 2 . 3   . N E T   F r a m e w o r k   デ ー タ プ ロ バ イ ダ と デ ー タ ソ ー ス  

( 1 ) .NET Framework Data Provider for SQL Server 

M i c r o s o f t S Q L S e r v e r V 7 . 0以 降 に 接 続 す る た め の 、 専 用 の デ ー タ プ ロ バ イ ダ で す 。. N E T F r a m e w o r k D a t a P r o v i d e rとS Q L S e r v e rの 間 は 独 自 の プ ロ ト コ ル で 接 続 さ れ る た め 、 高 速 な 処 理 が 期 待 で き ま す 。

S Q L S e r v e rへ の 接 続 は 、. N E T F r a m e w o r k D a t a P r o v i d e r f o r O L E D Bや. N E T F r a m e w o r k D a t a P r o v i d e r f o r O D B Cを 利 用 す る こ と も 可 能 で す 。 し か し 、 こ れ ら の 接 続 方 法 は 、O L E D BやO D B C D r i v e rと い っ た デ ー タ ア ク セ ス の た め の 層(ミ ド ル ウ ェ ア)が 必 要 に な る た め 、 処 理 速 度 が 落 ち 、 メ モ リ 使 用 量 が 増 加 し ま す 。

( 2 ) .NET Framework Data Provider for OLE DB 

C O Mベ ー ス の デ ー タ ベ ー ス ア ク セ ス 技 術 で あ るO L E D Bの 機 能 を 利 用

す る た め の. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ で す 。A D O . N E T以 前 に は 、A D O ( A c t i v e X D a t a O b j e c t )が デ ー タ ア ク セ ス 技 術 の 中 心 で し た が 、

A D Oに よ る デ ー タ ア ク セ ス 技 術 で 中 核 と な っ て い る の がO L E D Bで す 。

O L E D Bは 、O L E D Bプ ロ バ イ ダ と よ ば れ る 、 デ ー タ ベ ー ス ご と の ミ ド ル ウ ェ ア を 介 し て デ ー タ ベ ー ス に 接 続 し ま す 。 し た が っ て 、O L E D Bプ ロ バ イ ダ が 提 供 さ れ て い る デ ー タ ソ ー ス で あ れ ば 、. N E T F r a m e w o r k

D a t a P r o v i d e r f o r O L E D Bを 使 用 す る こ と で 接 続 す る こ と が で き ま す 。 ま た 、S Q L S e r v e r 6 . 5以 前 の 場 合 、. N E T F r a m e w o r k D a t a P r o v i d e r f o r S Q L S e r v e rが 未 サ ポ ー ト の た め 、O L E D Bに よ る 接 続 が 必 要 と な り ま す 。

( 3 ) .NET Framework Data Provider for ODBC 

Wi n d o w sに お い て 、 最 も 汎 用 的 に 利 用 さ れ て い る デ ー タ ア ク セ ス 技 術

がO D B Cで す 。 ほ と ん ど の デ ー タ ベ ー ス や デ ー タ ソ ー ス でO D B Cド ラ イ

バ が 提 供 さ れ て い ま す 。 し た が っ て 、. N E T F r a m e w o r k D a t a P r o v i d e r

f o r O D B Cを 利 用 す る こ と で 、 ほ と ん ど の デ ー タ ソ ー ス に 接 続 す る こ と

が で き ま す 。 た だ し 、O D B Cは 古 い 技 術 の た め 、 機 能 や パ フ ォ ー マ ン ス で 期 待 通 り の 成 果 を 得 ら れ な い ケ ー ス も あ る の で 、 注 意 が 必 要 で す 。

( 4 ) .NET Framework Data Provider for Oracle 

Wi n d o w sを 問 わ ず 、S o l a r i s、L i n u xな ど で 広 く 利 用 さ れ て い る デ ー タ ベ ー ス で あ るO r a c l eに 接 続 す る た め の 専 用 の デ ー タ ソ ー ス で す 。 接 続 の た め に は 、O r a c l e C l i e n t ( O r a c l e N e t )が 必 要 と な り ま す 。O r a c l e C l i e n t R 8 . 1 . 7以 降 が サ ポ ー ト さ れ て い ま す 。 し た が っ て 、O r a c l e C l i e n tの バ ー ジ ョ ン が 古 い 場 合 は 、O D B Cな ど に よ る 接 続 を 検 討 す る 必 要 が あ り ま す 。

( 5 ) Oracle Data Provider for .NET 

O r a c l e社 が 提 供 す る. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ で す 。O r a c l e 社 で は 、A D O . N E TでO r a c l eに ア ク セ ス す る 場 合 、O r a c l e D a t a P r o v i d e r f o r . N E Tで の 接 続 を 推 奨 し て い ま す 。 な お 、 埋 込 みS Q Lを 利 用 す る 場 合 は 、 こ の 接 続 方 法 は 選 択 で き ま せ ん 。

5.2.4 .NET Framework データプロバイダのクラス 

. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ の ク ラ ス は 、 使 用 す る. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ で 実 装 さ れ て お り 、 そ れ ぞ れ 接 頭 辞 が 異 な り ま す 。 し か し 、 ク ラ ス の 体 系 と 機 能 は ほ ぼ 同 じ で す の で 、 接 頭 辞 を 変 更 す る だ け で 互 換 が あ り ま す 。 た だ し 、. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ の 種 類 に よ り 、 サ ポ ー ト さ れ る メ ソ ッ ド や プ ロ パ テ ィ が 異 な る 場 合 も あ る の で 、 完 全 に は 互 換 し て い ま せ ん(実 装 に よ り 異 な り ま す)。

. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ に は 、C o n n e c t i o n、C o m m a n d、 D a t a R e a d e r、D a t a A d a p t e rの4つ の 代 表 的 な ク ラ ス が あ り ま す 。 そ れ ぞ れ の ク ラ ス の 概 要 に つ い て 、 次 に 説 明 し ま す 。

( 1 ) C o n n e c t i o n ク ラ ス  

デ ー タ ソ ー ス へ 接 続 す る た め の 機 能 を 提 供 す る ク ラ ス で す 。 デ ー タ ベ ー ス へ の 接 続 は 、C o n n e c t i o nオ ブ ジ ェ ク ト と し て 生 成 さ れ ま す 。

C o n n e c t i o nオ ブ ジ ェ ク ト イ ン ス タ ン ス を 生 成 す る 際 に 、 デ ー タ ソ ー ス へ 接 続 す る た め の 文 字 列(接 続 文 字 列)を 指 定 し ま す 。O p e nメ ソ ッ ド で 接 続 を 開 き 、C l o s eメ ソ ッ ド やD i s p o s eメ ソ ッ ド で 接 続 を 解 放 し ま す 。

( 2 ) C o m m a n d ク ラ ス  

デ ー タ ソ ー ス に 対 し て 、S Q Lス テ ー ト メ ン ト( Tr a n s a c t - S Q Lス テ ー ト メ ン ト)や ス ト ア ド プ ロ シ ー ジ ャ を 呼 び 出 す た め の ク ラ ス で す 。 行 を 返 すS Q L ( S E L E C T )を 発 行 す るE x e c u t e R e a d e rメ ソ ッ ド 、 行 を 返 さ な い S Q L ( I N S E RT、D E L E T E、U P D AT Eな ど)を 発 行 す るE x e c u t e N o n Q u e r y メ ソ ッ ド な ど が あ り ま す 。

E x e c u t e R e a d e rメ ソ ッ ド は 、 結 果 をD a t a R e a d e rオ ブ ジ ェ ク ト と し て 生 成 し ま す 。

( 3 ) D a t a R e a d e r ク ラ ス  

デ ー タ ソ ー ス か ら 前 方 向 に デ ー タ を 読 み 込 む た め の 機 能 を 提 供 し ま す 。 D a t a R e a d e rオ ブ ジ ェ ク ト を 作 成 す る に は 、C o m m a n dク ラ ス の

E x e c u t e R e a d e rメ ソ ッ ド を 使 用 し ま す 。

レ コ ー ド を 次 の 行 に 位 置 づ け るR e a dメ ソ ッ ド 、 カ レ ン ト 行 の 指 定 し た 列 の デ ー タ を 取 得 す る メ ソ ッ ド は 、G e tの 後 に デ ー タ の 型 名 が 付 い た メ ソ ッ ド が 用 意 さ れ て い ま す( G e t St r i n g、G e t I n t 3 2な ど)。 ま た 、 実 装 ご と に デ ー タ ソ ー ス の デ ー タ 型 に 応 じ た メ ソ ッ ド が 用 意 さ れ て い る ケ ー ス も あ り ま す( G e t S Q L I n t 3 2、G e t O r a c l e N u m b e rな ど)。

( 4 ) DataAdapterクラス 

D a t a S e tへ デ ー タ ソ ー ス の デ ー タ を 格 納 し た り 、D a t a S e tの デ ー タ を デ ー タ ソ ー ス に 反 映 さ せ た り す る た め の 機 能 を 提 供 す る ク ラ ス で す 。

デ ー タ ソ ー ス の デ ー タ をD a t a S e tに 反 映 さ せ るF i l lメ ソ ッ ド 、D a t a S e t の デ ー タ を デ ー タ ソ ー ス に 反 映 さ せ るU p d a t eメ ソ ッ ド な ど が 用 意 さ れ て い ま す 。

5.2.5 .NET Frameworkデータプロバイダの使用例 

次 の サ ン プ ル は 、. N E T F r a m e w o r k D a t a P r o v i d e r f o r S Q L S e r v e rを 使 用 し 、S Q L S e r v e rの テ ー ブ ル( S TO C K )の コ ピ ー をD a t a S e tに 作 成 し て い ま す 。 他 の 種 類 の. N E T F r a m e w o r kデ ー タ プ ロ バ イ ダ を 使 用 す る 場 合 も 、 基 本 的 な 手 順 は 同 じ で す 。

.NET Framework Data provider for SQL Server Connection

SQL Server テーブル

DataSet 1.Connectionオブジェクトの生成

2.接続のオープン

4.DataSetオブジェクトの生成

5.データソースの内容をDataSetに反映

.NET Framework Data provider for SQL Server Connection

SQL Server テーブル

.NET Framework Data provider for SQL Server Connection DataAdapter 3.DataAdapterオブジェクトの生成

SQL Server テーブル

6.接続の終了

.NET Framework Data provider for SQL Server Connection DataAdapter SQL Server

テーブル

.NET Framework Data provider for SQL Server Connection DataAdapter SQL Server

テーブル

DataSet DataTable

.NET Framework Data provider for SQL Server Connection DataAdapter SQL Server

テーブル

DataSet DataTable

図 5 . 2 . 4   サ ン プ ル の 動 作 イ メ ー ジ  

1 . C o n n e c t i o nオ ブ ジ ェ ク ト の 生 成

C o n n e c t i o nク ラ ス のN e wメ ソ ッ ド を 使 用 し て 、C o n n e c t i o nオ ブ ジ ェ ク ト を 作 成 し ま す 。 接 続 文 字 列 を 指 定 す る こ と も で き ま す が 、 接 続 は オ ー プ ン さ れ ま せ ん 。C o n n e c t i o nオ ブ ジ ェ ク ト 生 成 後 、

C o n n e c t i o n St r i n gプ ロ パ テ ィ に 接 続 文 字 列 を 設 定 す る こ と も 可 能 で す 。

2 . 接 続 の オ ー プ ン

C o n n e c t i o nオ ブ ジ ェ ク ト のO p e nメ ソ ッ ド を 使 用 し て 、 接 続 を オ ー プ ン し ま す 。O p e nを 省 略 し た 場 合 、D a t a A d a p t e rのF i l lメ ソ ッ ド の 使 用 時 に 自 動 的 に 接 続 が オ ー プ ン さ れ ま す 。

3 . D a t a A d a p t e rオ ブ ジ ェ ク ト の 生 成

D a t a A d a p t e rク ラ ス のN e wメ ソ ッ ド を 使 用 し て 、D a t a A d a p t e rオ ブ ジ ェ ク ト を 生 成 し ま す 。 こ の 時 点 で 、 パ ラ メ ー タ ー と し てS Q L文 や C o n n e c t i o nオ ブ ジ ェ ク ト を 指 定 す る こ と が で き ま す 。 ま た は 、 D a t a A d a p t e rオ ブ ジ ェ ク ト 生 成 後 に 、C o m m a n dク ラ ス を 使 用 し て 、 S e l e c t C o m m a n dプ ロ パ テ ィ な ど で 値 を 設 定 す る こ と も 可 能 で す 。

4 . D a t a S e tオ ブ ジ ェ ク ト の 生 成

D a t a S e tク ラ ス のN e wメ ソ ッ ド を 使 用 し て 、D a t a S e tオ ブ ジ ェ ク ト を 生 成 し ま す 。D a t a S e tオ ブ ジ ェ ク ト を 生 成 し た だ け で は 、 デ ー タ は 格 納 さ れ ま せ ん 。

5 . デ ー タ ソ ー ス の 内 容 を デ ー タ セ ッ ト に 反 映

D a t a A d a p t e rのF i l lメ ソ ッ ド を 使 用 し て 、 デ ー タ ソ ー ス で あ るS Q L S e r v e rの デ ー タ をD a t a S e tに 反 映 し ま す 。 接 続 が 開 か れ て い な い 場 合 は 、 自 動 的 に 接 続 を 開 き 、 処 理 を 行 っ た あ と に 自 動 的 に 接 続 を 終 了 し ま す 。

6 . 接 続 の 終 了

O p e nメ ソ ッ ド で 接 続 を 開 い て い る 場 合 、C o n n e c t i o nオ ブ ジ ェ ク ト の

C l o s eメ ソ ッ ド を 使 用 し て 、 接 続 を 終 了 し ま す 。

„ サ ン プ ル リ ス ト

* リ ポ ジ ト リ 段 落     R E P O S I T O R Y .         ・ ・ ・ ・  

      C L A S S   C L A S S - D A T A S E T   A S  

      " S y s t e m . D a t a . D a t a S e t "  

      C L A S S   C L A S S - D A T A T A B L E   A S   " S y s t e m . D a t a . D a t a T a b l e "  

      C L A S S   C L A S S - D A T A T A B L E S   A S  

      " S y s t e m . D a t a . D a t a T a b l e C o l l e c t i o n "  

      ・ ・ ・ ・ ・  

      C L A S S   C L A S S - C O N N E C T I O N   A S  

      " S y s t e m . D a t a . S q l C l i e n t . S q l C o n n e c t i o n "  

      C L A S S   C L A S S - D B A D A P T E R   A S  

      " S y s t e m . D a t a . S q l C l i e n t . S q l D a t a A d a p t e r "  

ドキュメント内 NetCOBOL for .NET 応用編 (ページ 133-141)