データベースⅢ

Similar documents
VB.NET解説

データベースⅠ

DAOの利用

VB.NET解説

データアダプタ概要

グラフィックス

Userコントロール

ICONファイルフォーマット

ファイル操作

NotifyIconコントロール

目次 更新履歴... 1 はじめに... 3 レコードセット?... 3 準備... 5 SQL でデータを取得する... 6 データのループ処理... 7 列の値を取得する... 7 対象行を変更する (MoveFirst, MoveNext, MovePrevious, MoveLast)...

プロセス間通信

ADOとADO.NET

VB実用Ⅲ⑩ フリーデータベースⅡ

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

VB実用③ アクセス操作Ⅰ

データベースプログラミング

C# bit 環境用 C# 2005 基礎 Ⅱ 電脳梁山泊烏賊塾 データベース操作プログラム Ⅰ C# プログラムの概要 データベースプログラムを手軽に作成する方法としては Access のフォーム機能を用いる事が 先ず考えられます ウィザードも充実しており 操作を覚

正規表現応用

VB実用① データベースⅠ

ルーレットプログラム

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

mySQLの利用

ブロック崩し風テニス

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

ListViewコントロール

ファイル操作-バイナリファイル

VB実用Ⅲ⑩ フリーデータベースⅡ

構造体

64bit環境で32bitコンポーネントの利用

Microsoft Word - VB.doc

プレポスト【問題】

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

ファイル監視

テキストファイルの入出力1

プログラミング基礎I(再)

VB実用Ⅲ① ADOでファイル操作

ブロック パニック

相性占いプログラム

C#の基本

Microsoft Office操作(EXCEL)

回文作成支援プログラム

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

ハッシュテーブル

3D回転体プログラム

VB実用⑦ エクセル操作Ⅰ

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

Prog2_6th

ウィンドウ操作 応用

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

万年暦プログラム

グラフィックス 目次

第 13 講データ管理 2 2 / 14 ページ 13-1 ファイルを開く 第 12 講で保存したデータベースファイル サークル名簿.accdb を開きましょう 1. Access を起動します 2. Microsoft Office Access - 作業の開始 が表示されていることを確認します

3D回転体プログラム

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

10th Developer Camp - B5

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

Microsoft PowerPoint - chap10_OOP.ppt

MVP for VB が語る C# 入門

相性占いプログラム

Javaプログラムの実行手順

文字列操作と正規表現

VB実用Ⅲ③ ADOでXML操作

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作

C#の基本2 ~プログラムの制御構造~

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

PowerPoint プレゼンテーション

Transcription:

データベース操作プログラム Ⅲ C# 2005 20 プログラムの概要 ACCESS 等のデータベースの操作に不慣れな者でも 簡単に使用する事が出来るようなデータベースアプリケーションを目指します 今回は データグリッドをクリックする事に依り 其のレコードのフィールドデータを個別にテキストボックスやコンボボックスに表示するを付加する 此の際 カテゴリ ID や著者 ID の様に人間に解り難いデータ形式では無く 名称で表示する事に依り 操作性を高めて居る 亦 テキストボックスやコンボボックスで入力したデータを追加したり 表示された内容に変更を加えて更新したり表示されたレコードを削除したりするを付加する VB でデータベースを操作する為の基本と成るを盛り込んで有るので 色々と工夫し 発展させて 操作性の良いアプリケーションに仕上げて下さい 今回の課題項目 コレクションの利用 (ComboBox.Items ADODB.Recordset.Fields) プロパティの利用 (Checked Items.Count SelectedIndex Text Value) メソッドの利用 (Execute Requery WriteLine SubString) イベントハンドラの追加 (EventHandler new) ステートメントの利用 (break) 制御構造構文 ( ループ for ( ~ ) 条件分岐 switch if ( ~ ) ) デバッグ (Debug.WriteLine) 今回の重点項目 イベントハンドラの追加 (EventHandler new) ADODB.Recordset(Fields( ).Value Refresh) ADODB.Connection(Open Execute Close) SQL 文 (INSERT 文 : レコードを追加する文 DELETE 文 : レコードを削除する文 ) 今回の応用項目 タイトルの項目を書き換えた時に削除出来ない不具合を修正する 本テーブル以外 ( カテゴリ 著者 ) のデータも操作 ( 追加 変更 削除 ) 出来る様に変更する -1-

プログラムリスト ( 追加分 ) namespace bookshelf public partial class bookshelf : Form // 構造体の宣言 private struct Category public int id; public int total; // 構造体型の動的配列の宣言 private Category[ ] cate; ADODB.Connection cn; ADODB.Recordset rs; public bookshelf( ) InitializeComponent( ); // フォームが読み込まれた時の処理 private void bookshelf_load( object sender, EventArgs e ) // コネクションとレコードセットのインスタンス生成 cn = new ADODB.Connection( ); rs = new ADODB.Recordset( ); Structure ステートメントは 1 個又は複数の要素を持つデータ型 を宣言する 通常 レコード内の フィールド定義に用いられる 各要素のスコープは public でない と 構造体の外部からアクセスす る事は出来ない 宣言した構造体は 通常のデータ 型と同じ様に使用出来る 此処で private 宣言した変数は同じフォームモジュール内の総てのプロシージャで値の参照と設定を行う事が出来る クラス名と同じ名前のメソッドは コンストラクタと呼ばれ クラスのインスタンスを生成し 初期化するメソッドで有る オブジェクト変数のインスタンスを生成するには New キーワードを用いて行う事が出来る // コネクションの確立 ( データベースへの接続 ) cn.cursorlocation = ADODB.CursorLocationEnum.adUseClient; cn.open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;", "", "", 0 ); // 選択クエリに依るレコードセットの取得 rs.open( "SELECT 本.*, 著者. 著者名 FROM 本, 著者 WHERE 本. 著者 ID= 著者.ID;", cn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 1 ); // データグリッドへの連結 dgdbookshelf.datasource = ( msdatasrc.datasource ) rs; AxDataGrid の Datasource プロパティにレコードセットをセットする事で データをバインドする // サブルーチンコール CboAddItem( ); CateUpdate( ); // イベントハンドラの追加 追加 this.btninsert.click += new EventHandler( OperationSQL ); this.btnupdate.click += new EventHandler( OperationSQL ); this.btndelete.click += new EventHandler( OperationSQL ); 複数のコントロールを同一のイベントプロシージャに関連付けるには 新しいイベントハンドラを追加する 但し イベントプロシージャに関連付けられるプロシージャは 前以て記述して置く -2-

// データグリッドがクリックされた時の処理 追加 private void dgdbookshelf_clickevent( object sender, EventArgs e ) string s = ""; int n; // ラジオボタンで 本 が選択されて居る時丈フィールドデータを表示 if ( radbook.checked ) txtid.text = rs.fields[ "ID" ].Value + ""; txttitle.text = rs.fields[ " タイトル " ].Value + ""; txtprice.text = rs.fields[ " 価格 " ].Value + ""; for ( int i = 0; i < cbocategory.items.count; i++ ) s = cbocategory.items[ i ].ToString( ).Substring( 0, 3 ); n = System.Convert.ToInt32( s ); if ( System.Convert.ToInt32( rs.fields[ " カテゴリ ID" ].Value + "") == n ) cbocategory.selectedindex = i; break; for ( int i = 0; i <cbowriter.items.count; i++ ) s = cbowriter.items[ i ].ToString( ).Substring( 0, 3 ); n = System.Convert.ToInt32( s ); if (System.Convert.ToInt32( rs.fields[ " 著者 ID" ].Value + "") == n) cbowriter.selectedindex = i; break; // コマンドボタンがクリックされた時の処理 追加 private void OperationSQL( object sender, EventArgs e ) Button obj = ( Button ) sender; int idx = System.Convert.ToInt32( obj.tag ); string sql = "", sc = "", sw = ""; // ラジオボタンで 本 が選択されて居なければプロシージャを脱出 if (!radbook.checked ) return; カレントレコードの各フィールドより其の値を取得して コントロールに表示して居る コンボボックスのリストに対応する数値を格納する ItemData プロパティが廃止された為 リストに ID の値を 3 桁で含めて居る データグリッドに表示されて居る左端の 部分をクリックすると Recordset 内で 其のレコードが カレントレコードと成る C# は データ型に厳格な言語で有る データ型の変換は 殆ど暗黙的に行われる事はなく 明示的に行う必要が有る 此のプロシージャは イベントハンドラを追加する前に ボタンコントロールの Click イベントを基に予め作成して置くと良い C# では object 型から Button 型への変換は 暗黙的に行われない為 明示的にキャスティングする必要が有る switch ( idx ) // ボタン ( 追加 ) がクリックされた時の処理 case 0: 此の節は case 1 の節にスルーされる Visual Basic の Select 文とは異なり 各節は break しない限り下方の節にスルーされる -3-

// ボタン ( 変更 ) がクリックされた時の処理 case 1: if ( txttitle.text == "") return; if ( cbocategory.selectedindex < 0 ) return; if ( cbowriter.selectedindex < 0 ) return; sc = cbocategory.items[cbocategory.selectedindex].tostring( ).Substring(0, 3).Trim( ); sw = cbowriter.items[cbowriter.selectedindex].tostring( ).Substring(0, 3).Trim( ); if ( idx == 0 ) sql = "INSERT INTO 本 ( タイトル, 価格, 購入日, カテゴリ ID, 著者 ID) VALUES(" + "'" + txttitle.text + "'," + txtprice.text + "," + "'" + DateTime.Now.ToString( ) + "'," + sc + "," + sw + ");"; else sql = "UPDATE 本 SET " + " タイトル ='" + txttitle.text + "'," + " 価格 =" + txtprice.text + "," + " カテゴリ ID=" + sc + "," + " 著者 ID=" + sw + " " + "WHERE ID=" + txtid.text + ";"; break; // ボタン ( 削除 ) がクリックされた時の処理 case 2: sql = "DELETE FROM 本 WHERE タイトル ='" + txttitle.text + "';"; break; 必須項目 ( 値要求が設定されて居る項目 ) が指定されて居ない場合は 何も仕無いで プロシージャを抜ける フィールドに設定する値は 文字列型の場合は シングルコーテーションでクォートし 数値型の場合は 其の侭記述する 長い文は 適当な処で区切り 複数行で結合して行くと コードが見易く成る 下方の case 節にフォールスルーさせない様にするには break 文を記述する // デバッグの為にイミディエイトウィンドウに SQL 文を表示 System.Diagnostics.Debug.WriteLine( sql ); // クエリの実行 object n = ( object ) 1; cn.execute( sql, out n, 1 ); CateUpdate( ); // 表示データを更新する為に選択クエリの再実行 rs.requery( 1 ); イミディエイトウィンドウが 表示されない場合は デバッグ メニューの ウィンドウ 項目から選択して表示する 頻繁に行う処理は 名前を付け 一纏めに仕て置き 其の処理を必要とする箇所よりコール ( 呼出 ) する事で 対象のコードを実行する事が出来る 基本的に Visual Basic のコードは 行末を文の終端と看做す為 1 行毎でしか記述する事が出来ないが C# では セミコロン ( ; ) を文の終端とする為 1 行のコードが長い場合は 複数行に分割して入力する事も出来る 長い文を複数行で記述すると 画面に表示する時や印刷した時に 読み易いコードを記述する事が出来る 因みに Visual Basic では 行末に行継続文字 ( スペースとアンダースコアの組合せ ) を使用する事で 長い文を複数行に分けて記述する事が出来る -4-

ADODB.Recordset の Open メソッド ( 再掲 ) 書式 カーソルを開くメソッド Recordset.Open( 引数 1, 引数 2, 引数 3, 引数 4, 引数 5 ) ベーステーブルからのレコード クエリ結果 又は 以前に保存された Recordset を表すカーソルを開く事が出来る 引数 1 には 実行する SQL ステートメント テーブル名等を指定し 省略する事が出来る 引数 2 には 有効な Connection オブジェクト変数名を指定し 省略する事が出来る 引数 3 には Recordset を開く際にプロバイダが使うカーソルタイプを指定し 省略する事が出来る 引数 4 には Recordset を開く際にプロバイダが使うロックの種類を指定し 省略する事が出来る 引数 5 には プロバイダが引数 1 を評価する方法を示す定数を指定し 省略する事が出来る C# から使用する場合は 総ての引数を指定する必要が有る ADODB.Recordset の Requery メソッド 書式 クエリを再実行して Recordset オブジェクトのデータを更新するメソッド Recordset.Requery( 引数 ) オブジェクトの基に成るクエリ (CommandText プロパティに設定されて居るクエリ ) を再実行して Recordset オブジェクトのデータを更新する 引数には 此の操作が作用するオプションを示すビットマスクを指定し 省略可能で有る 此のパラメータが adasyncexecute に設定されて居る場合 此の操作は非同期で実行され 完了すると RecordsetChangeComplete イベントが発生する Requery メソッドを使用して 元のコマンドを再実行してデータをもう一度格納する事に依り データソースから Recordset オブジェクトの内容全体を更新する 此のメソッドの呼出は Close 及び Open メソッドを連続して呼び出すのと同じ有る カレントレコードの編集中 又は 新規レコードを追加して居る時に此のメソッドを呼び出すと エラーが発生する Recordset オブジェクトが開いて居る間 カーソルの属性を定義するプロパティ (CursorType LockType MaxRecords 等 ) は読み取り専用に成って居る 此の為 Requery メソッドでは 現在のカーソルしか更新する事は出来ない カーソルのプロパティを変更して結果を参照するには Close メソッドを使用してプロパティをもう一度読み取り / 書き込み専用にする必要が有る 此の操作の後 プロパティ設定を変更して Open メソッドを呼び出し カーソルを再度開く ADODB.Recordset の Close メソッド ( 再掲 ) 書式 開いて居るオブジェクト 及び 依存する総てのオブジェクトを閉じるメソッド Recordset.Close( ) Connection オブジェクト 又は Recordset オブジェクトを閉じて 関連するシステムリソースを解放する オブジェクトを閉じてもメモリからは削除されず プロパティ設定を変更してもう一度開く事が出来る メモリからオブジェクトを完全に削除するには オブジェクト変数を null に設定する -5-

ADODB.Recordset の Fields コレクション Recordset オブジェクトの総ての Field オブジェクトが含まれるコレクション Recordset オブジェクトは Recordset 内の列に対応する Field オブジェクトで構成される Fields コレクションを持つ Fields コレクションは コレクション内のオブジェクト数 ( 即ち フィールドの数 ) を示す Count プロパティが有る コレクションのメンバ ( 要素 ) は 常に 0 から順に番号が割り当てられる為 0 から Count プロパティより 1 小さい値迄のループを使用すると 総てのメンバにアクセスする事が出来る 猶 Count プロパティが 0 の場合 コレクションにはオブジェクトが含まれて居ない事を意味する 各々のメンバ (Field オブジェクト ) は 下記の様に フィールド名 又は 序数を用いて表わす事が出来る フィールド名使用 :Recordset.Fields( " タイトル " ) 序数使用 :Recordset.Fields( 1 ) 序数は SELECT 文で指定したフィールドの順番 ( アスタリスク * で総てのフィールドを指定した場合は テーブルに定義されて居る順番 ) に割り当てられ 最初の要素は 0 で有る ADODB.Recordset の Field オブジェクト 共通のデータ型を持つデータの列を表すオブジェクト Recordset オブジェクトは Recordset 内の列に対応する Field オブジェクトで構成される Fields コレクションを持つ Field オブジェクトの Value プロパティを使用して カレントレコードのデータを設定 又は 参照する事が出来る 但し Field オブジェクトのコレクション メソッド プロパティの中には プロバイダが公開するに依っては使用できない物も有る 一般に Field オブジェクトのコレクション メソッド プロパティを使用して 次の操作が可能で有る Name プロパティを使用して フィールド名を参照する Value プロパティを使用して フィールド内のデータ表示や変更を行う Type Precision NumericScale プロパティを使用して フィールドの基本特性を参照する DefinedSize プロパティを使用して 宣言したフィールドサイズを参照する ActualSize プロパティを使用して 与えられたフィールド内の実際のデータサイズを参照する Attributes プロパティ Properties コレクションを使用して 与えられたフィールドでサポートされて居るの種類を識別する AppendChunk GetChunk メソッドを使用して 長バイナリ型や文字型データを含むフィールドの値を操作する プロバイダがバッチ更新をサポートして居る場合 OriginalValue UnderlyingValue プロパティを使用して フィールド値の矛盾を解決する 猶 総てのメタデータプロパティ (Name Type DefinedSize Precision NumericScale) は Field オブジェクトの Recordset を開く前に利用出来る 動的にフォームを作成する場合に便利で有る -6-

Debug オブジェクトに依るデバッグ コードのデバッグに使用するメソッドとプロパティのセットを提供するオブジェクト Debug クラスのメソッドを使用し デバッグ情報を出力し アサーションと照らし合わせて論理チェックを行う事で パフォーマンスや出荷製品のサイズに影響を与える事無くコードの信頼性を高める事が出来る 此のオブジェクトには Write WriteLine WriteIf WriteLineIf の各メソッドが用意されて居り 出力ウィンドウに 変数等に格納されて居る値を出力する事に依り 其の値を確認する事が出来る 猶 Visual Basic.NET 以降のエディタでは 実行時に既定で画面の下部に表示される 自動変数 のタブに 其の時の変数の値が表示され 亦 デバッグ メニューの クイックウォッチ で 任意の変数や配列の値を確認する事も出来る Debug オブジェクトの WriteLine メソッドに依るデバッグ情報の出力 書式 デバッグに付いての情報を Listeners コレクションのトレースリスナに書き込メソッド Debug.WriteLine( 引数 ) Listeners コレクションのトレースリスナにメッセージを出力し 行終端記号 ( 改行 ) を出力する 引数には 変数名 オブジェクト名 文字列を指定し 省略可能で有る 一般的には 変数名を指定して 其の時点で 当該変数に格納されて居る値を確認する事に使用する 猶 引数を省略した場合は 行終端記号 ( 改行 ) 而巳が出力される 行終端記号を出力しない場合は Write メソッドを使用する Write メソッドでは 行終端記号は出力されず 次の出力は 同一行に続けて出力される 亦 条件に応じて 出力するか出力しないかを制御するには WriteIf メソッドや WriteLineIf メソッドを使用する事も出来る 但し WriteIf メソッドや WriteLineIf メソッドの代わりに If...Then ステートメントを使用する事に依り アプリケーション導入に依るパフォーマンスの低下を最小限に留める事が出来る為 余り使用する事は無い 猶 Debug オブジェクトには 条件をチェックし 其の条件が false の場合に メッセージを表示する Assert メソッドも用意されて居る Type パラメータが有効か何うかをチェックし Type と仕て nul 参照 (Visual Basic では Nothing) が渡された場合は Assert がメッセージを出力する例を次に示す Public Shared Sub MyMethod(T As Type) Debug.Assert( Not (T Is Nothing), " オブジェクトを取得出来ません!") End Sub 'MyMethod 亦 Debug オブジェクトには デバッグ時 ( エディタで実行した時 ) に而巳 任意のエラーメッセージを出力する Fail メソッドも用意されて居る 此等のデバッグを旨く利用して プログラム中の間違い ( バグ ) を素早く発見し 開発効率を向上させる様に努める事が望ましい -7-

ADO と ADO.NET Visual Basic.NET では 従来の ADO を従来の方法で使用する事も出来るが 通常 データベースにアクセスする為に ADO.NET を使用する 此処では Windows 上で動作するアプリケーションの開発に必要な知識を中心に ADO と ADO.NET の差異を説明する Visual Basic 6.0 では データベースにアクセスする為に ADO(ActiveX Data Object) を使用するが ADO.NET は 此れを.NET Framework 用に進化させた物で有り 両者は データアクセスの概念に大きな差異が有る データアクセス用のコンポーネント ADO Visual Basic 6.0 では データアクセス用のコンポーネントに ADO データコントロール (ADODC) が有り 下記のを提供して居る データベースに接続する データベースから必要なデータを取得する フォーム上のコントロールとデータベースを連結する ADO.NET ADO.NET には ADO の様な便利なコンポーネントは無い コネクションを使用してデータベースに接続し データアダプタを使用して必要なデータを取得する データの保持方法 ADO ADO では 取得したデータをレコードセットで管理する レコードセットは メモリ上に保持した仮想テーブルの様な物で有る ADO.NET ADO.NET では データセットに依り データベースと同じ物をメモリ上に保持する事が出来る データセットには 複数のテーブルの構造や 主キーやリレーションシップ等の属性を定義する事が出来る 亦 実行時には 取得したデータを管理する事も出来る レコードの扱い方 ADO ADO のレコードセットに含まれるレコードは Bookmark プロパティに依り管理されて居り 孰れかのレコードが必ず選択された状態に成って居る 因みに レコードセットを取得した初期状態では 先頭のレコードが選択された状態に成って居る 此のレコードをカレントレコードと呼び 亦 MoveNext メソッドや MovePrevious メソッド等に依り カレントレコードを移動する事が出来る ADO.NET ADO.NET には カレントレコードと謂う概念は無い 其の為 レコードを移動する為のメソッドも無い データセットに保持されたデータは 行のコレクションと仕て扱われ 各レコードは 配列の要素番号を使用して識別する -8-

接続方法 ADO ADO では データベースに常時接続した状態で使用するのが基本で有る 其の為 常に最新のデータを取得し 更新する事も可能で有るが 実際には データの転送時以外は データベースに接続して居る必要が無い場合が多い 亦 データベースへの接続を維持する事で システムリソースを消費し パフォーマンスが低下すると謂う負の側面も有る データベース フォーム ADO.NET ADO.NET では データセットに依り データベースと粗同じ物をメモリ上に保持する事が出来るのでデータベースに接続する必要が有るのは データセットにデータを取得する時と データセットで変更した内容をデータベースに転送する時丈で有る 其れ以外の時はデータベースの接続を解除し データセットを利用してデータベース操作を行う フォーム データアダプタ コネクション データベース データセット ADO と ADO.NET の使い分け 新規にアプリケーションを開発する時は ADO.NET を利用すると 豊富なツールを利用して 効率良くアプリケーションを開発する事が出来る ADO.NET では データベースと常時接続する必要が無い為 システムの負荷を軽減する事が出来る 併し 非接続型故に 大量のレコードの即時更新や 常に最新の情報が必要な場合には 不適格で有り 此の様な場合は 常時接続型の ADO を利用すると良い.NET Framework でも ADO は サポートされて居る -9-

オブジェクト指向 概念 嘗てのプログラムはシンプルなシステムの上に成り立って居た 併し 近日では GUI( グラフィカルユーザインターフェイス : マウスで視覚的に操作出来る仕組み ) の OS( オペレーションシステム :Windows98 2000 XP MacOS 等 ) が発達し より簡単に より複雑な処理を行える様に成った 其れに伴い プログラミングの手法も其れに沿う必要が有った 開発スピードの向上 様々なを有するソフト開発が出来る事 過去作業の再利用 上記の条件を満たすプログラミングの手法として オブジェクト指向 と謂う概念が編み出された 簡単に謂うと 部品と部品を組み合わせてひとつの物を作る と謂う物で有る VisualBasic に限らず Java C++ Delphi でも取り入れられて居る概念で有り 大方 考え方に違いは無い 図解 プロパティ (Property) 私には特徴が有ります 例えば 名前 : りんごちゃん高さ :5cm 幅 :5cm 色 : 赤色等々必要に応じて変更して下さい メソッド (Method) 命令して頂ければ 行動します 例えば 動きなさい と言って下さい りんごちゃん.Move いずこへ オブジェクト (Object) 若しくはコントロール (Control) フォームやラベルやテキストボックス等を指します 物体と謂う意味です イベント (Event) 皆さんがマウスで私をクリックしたりすると 出来事が起こります 例えば Private Sub りんごちゃん _Click() プログラム End Sub 必要に応じて何をするか言って ( プログラムして ) 下さい オブジェクト 1 から作成する事も出来るが 既存の物に関しては使用する VB では様々なコントロールが用意されて居る プロパティコントロールには属性が有り デザイン上 コード上で変更 参照する事が出来る 其の数 種類はコントロールに依り異なる イベント GUI では様々な操作が有る 例えば クリック ダブルクリック ドラッグドロップ等 必要に応じてイベント内にプログラムする イベントドリブン ( 分割 ) 方式と言う メソッドプロパティと区別が付き難いが = で結ばれて居ないのが特徴 オブジェクトに対して 命令 すると覚えると良い -10-