すぐ使えるADO.NET

【Visual BasicによるADO.NETデータベースプログラミング】

本の紹介

バックナンバー:VB.NETデータベースプログラミング

ADO.NETの基本的なプログラミングを中心に、すぐ使えるサンプルプログラム満載です。




【創刊号】

                                               創刊号(2004.3.22発行)
====================================================================
         ★★ VB.NETデータベースプログラミング奮闘記 ★★

--------------------------------------------------------------------
                  − ごあいさつ −

ご購読ありがとうございます。
ADO.NETの基本的なプログラミングを中心に掲載していきます。
データベースは Access(MDB) を使いますが、
SQLServer でも同様なコーディングになります。
相違については、注釈や補足を参考にして下さい。
また、オブジェクト指向についても掲載していく予定です。
このメールマガジンが皆様の技術向上の一助になれば幸いです。
これからもご購読の程よろしくお願い申し上げます。

--------------------------------------------------------------------
すぐに使えるADO.NETの研究 --> サンプルプログラム満載
                              http://park5.wakwak.com/‾weblab/
====================================================================
               -----【目次】-----
1. VB.NETワンポイント:演算子+=, -=, *=, /=, ¥=, &=
2. 社員テーブルを作成する
3. 社員テーブルから全レコードを取得する−その1−(1)
4. ソースプログラムリスト
5. VB.NETワンポイントオブジェクト指向:メソッドの呼び出し方
6. 次号予告

--------------------------------------------------------------------
     ■■ VB.NETワンポイント:演算子+=, -=, *=, /=, ¥=, &= ■■

C言語と同様な演算子 +=, -=, *=, /= が新たに加わりました。

Dim s As Single = 10 として、
s += 1  --> s = s + 1  と同じです。s = 11
s -= 2  --> s = s - 2  と同じです。s = 9
s *= 3  --> s = s * 3  と同じです。s = 27
s /= 4  --> s = s / 4  と同じです。s = 6.75

他に¥=と&=があります。

s ¥= 4  --> s = s ¥ 4  と同じです。
s = 27のとき、s ¥= 4 の実行結果は、s = 6となり、
小数部分は切り捨てられます。

str1 &= str2  --> str1 = str1 & str2  と同じです。
Dim str1 As String = "Visual "
Dim str2 As String = "Basic" として、
str1 &= str2 の実行結果は、str1 = "Visual Basic" となります。

--------------------------------------------------------------------
                ■■ 社員テーブルを作成する ■■

下記の表を参考にして、Accessでsample.mdbに社員テーブルを作成します。
Accessで数レコードを新規に追加します。
sample.mdbは、プロジェクトファイルホルダの下のbinホルダに置きます。

key フィールド名   データ型   サイズ  値要求  空文字列の許可
------------------------------------------------------------
● 社員コード  テキスト型   5 はい  いいえ
− 社員氏名   テキスト型  20 はい  いいえ
− 社員カナ   テキスト型  40 いいえ はい
− 部門コード  テキスト型   3 はい  いいえ
− 入社年月日  日付/時刻型  − はい  −
− 更新日時   日付/時刻型  − はい  −

注意1:社員カナは、Nullまたは長さ0の文字列の入力を許可
注意2:テーブル名・フィールド名は、必要なら英数字に変更して下さい

--------------------------------------------------------------------
    ■■ 社員テーブルから全レコードを取得する−その1−(1) ■■

Visual Basic のwindowsアプリケーションプロジェクトを新規に作成し、

form1.vbのエディタ画面に切り替えます。まず、先頭行に

Imports System.Data.OleDb  '(SQLServer:Imports System.Data.SqlClient)

と記述します。この記述でそれ以降その名前空間に属しているものは、

名前空間を省略して書くことができます。たとえば、

Dim oConn As New System.Data.OleDb.OleDbConnection() は、

Dim oConn As New OleDbConnection() と短く書けます。

次に、取得する社員テーブルの構造体を定義します。全項目取得しますので

Public Structure structSyain
    Public syainCode As String              '社員コード
    Public syainSimei As String             '社員氏名
    Public syainKana As String              '社員カナ名
    Public bumonCode As String              '部門コード
    Public nyusyaNengappi As DateTime       '入社年月日
    Public kosinNitizi As DateTime          '更新日時
End Structure

のように、フィールド項目の型に合わせて定義します。

ここからは、Form1_Loadに記述します。

社員テーブルから複数件数のレコードを取得できるよう、

社員テーブル構造体を配列で宣言します。

Dim syainInfo() As structSyain

そして、全レコードを取得する関数getSyainAllの

参照渡しパラメータとして指定します。

関数getSyainAllの仕様は次のようにします。

名   称:Private Function getSyainAll
機   能:社員テーブルから全レコードの全項目を取得する
パラメータ:参照渡し、社員テーブル構造体structSyainの配列
      この構造体配列に取得した社員テーブルの全レコードを設定
リターン値:長さ0の文字列ならば、全レコードの取得成功、
      そうでなければ、レコードの取得失敗

この関数は、msg = Me.getSyainAll(syainInfo) のように呼び出します。

リターン値 msg が長さ0の文字列ならば、全レコードが取得されています。

取得レコード数 syainInfo.Length を使えば、

syainInfo(0) から syainInfo(syainInfo.Length - 1) までが

取得レコードになります。

各レコードのフィールド値、たとえば社員氏名は、

1レコード目の社員氏名は、  syainInfo(0).syainSimei
2レコード目の社員氏名は、  syainInfo(1).syainSimei

のように参照できます。

少し長くなりましたが、ここまで理解できたでしょうか。簡単そうですが、

私も最初のころはヘルプを見ても分からないことが多くありました。

では、ここまでのところをソースプログラムリストにまとめておきます。

関数getSyainAllの中身については次号で説明します。

--------------------------------------------------------------------
               ■■ ソースプログラムリスト ■■

Imports System.Data.OleDb

'社員テーブル構造体
Public Structure structSyain
    Public syainCode As String              '社員コード
    Public syainSimei As String             '社員氏名
    Public syainKana As String              '社員カナ名
    Public bumonCode As String              '部門コード
    Public nyusyaNengappi As DateTime       '入社年月日
    Public kosinNitizi As DateTime          '更新日時
End Structure

Public Class Form1
  Inherits System.Windows.Forms.Form

'" Windows フォーム デザイナで生成されたコード "(自動生成部分省略)

  '---------- 全レコードを取得してコンソールに出力 ----------
  Private Sub Form1_Load(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles MyBase.Load

    Dim syainInfo() As structSyain
    Dim msg As String
    Dim i As Integer
    Dim strOut As String

    '社員テーブル全レコードの全フィールド値を取得
    msg = getSyainAll(syainInfo)
    If msg = "" Then
      '取得レコードの確認
      For i = 0 To syainInfo.Length - 1
        strOut = (i + 1).ToString + "件目==>"
        strOut += " 社員コード:" + syainInfo(i).syainCode
        strOut += ", 社員氏名:" + syainInfo(i).syainSimei
        strOut += ", 社員カナ:" + syainInfo(i).syainKana
        strOut += ", 部門コード:" + syainInfo(i).bumonCode
        strOut += vbCrLf + Space(9)
        strOut += "入社年月日:" + syainInfo(i).nyusyaNengappi
        strOut += ", 更新日時:" + syainInfo(i).kosinNitizi
        'レコードの内容をコンソールに出力
        Trace.WriteLine(strOut)
      Next
    Else
      'レコードが取得できなかった時の処理
      MsgBo(msg, MsgBoxStyle.OKOnly)
    End If

  End Sub

  '---------- 社員テーブルの全レコード取得関数 ----------
  Private Function getSyainAll(ByRef syainInfo() As structSyain) _
                                                        As String
     次号に掲載します(4月1日発行予定)
     http://park5.wakwak.com/‾weblab/fTocSelect.htm
     に、ソースリスト掲載しています。
  End Function

End Class

--------------------------------------------------------------------
 ■■ VB.NETワンポイントオブジェクト指向:メソッドの呼び出し方 ■■

同一クラスメソッド
  msg = Me.メソッド名() または、msg = メソッド名()

  Me.を付ければ、インテリセンス機能が働きます。

別のクラスメソッド
  Dim obj As New メソッドを定義したクラス名()
  msg = obj.メソッド名()

注:Visual Studioのヘルプによれば、クラスメソッドは、クラスで宣言
されているパブリックな Sub または Function を指します。

--------------------------------------------------------------------
 ■■ 次号予告:第2号(4月1日発行予定) 月2回ないし3回発行予定 ■■

1. 関数 getSyainAll の中身について
2. VB.NETワンポイント
3. VB.NETワンポイントオブジェクト指向
====================================================================
VB.NET データベースプログラミング奮闘記    創刊号(2004.3.22)
          http://park5.wakwak.com/‾weblab/
--------------------------------------------------------------------
このメールマガジン(マガジンID: 0000128094)は
『まぐまぐ!』 http://www.mag2.com/ を利用して発行しています。

購読の中止は次のホームページからお願い致します。
  http://park5.wakwak.com/‾weblab/
  http://www.mag2.com/m/0000128094.htm
--------------------------------------------------------------------
このメールマガジン及びすぐ使えるADO.NETの研究ホームページで公開して
いるソースプログラム・データの利用により生じた損害等について発行者は
一切責任を負いません。
ソースプログラムの再利用は自由ですが、著作権は発行者が所有します。
このメールマガジン及びすぐ使えるADO.NETの研究ホームページに掲載され
ている会社名・製品名等は各社の登録商標または商標です。
====================================================================

Copyright© すぐ使えるADO.NET. All rights reserved.