Microsoft Visual C# .NET については、次の資料を参照してください。309158
この資料では、次の Microsoft .NET Framework クラス ライブラリの名前空間を参照しています。

  • System.Data.SqlClient

  • System.IO

この資料の内容


概要

ADO.NET では、GetChunk および AppendChunk メソッドを BLOB (Binary Large Object) フィールドの読み取りと書き込みに使用することはできません。この資料では、FileStream オブジェクトとバイト配列を使用して、Microsoft SQL Server からファイルに BLOB データを読み取る方法および書き込む方法について説明します。


必要条件


必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack は次のとおりです。

  • Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server、Windows NT 4.0 Server のいずれか

  • Microsoft Visual Studio .NET

  • Microsoft SQL Server

プロジェクトの作成


  1. SQL Server の Northwind データベースに MyImages というテーブルを追加します。テーブルには以下のフィールドを含めます。

    • Int 型の "ID" という名前の ID フィールド

    • VarChar 型 (長さ 50) の "Description" という名前のフィールド

    • Image 型の "ImgField" という名前のフィールド


  2. Visual Studio .NET で、Visual Basic Windows アプリケーション プロジェクトを新規作成します。

  3. デフォルトのフォーム Form1 に、Button コントロールを 2 つ追加します。

  4. [プロパティ] ウィンドウで、Button1 の Text プロパティを (ファイルから) データベースに保存に変更し、Button2 の Text プロパティを (データベースから) ファイルに保存に変更します。

  5. 次のコードをコード ウィンドウの最上部に追加します。

          Imports System.Data.SqlClient
    Imports System.IO
  6. [Button1] をダブルクリックし、Button1_Click イベント ハンドラに次のコードを追加します。

    注 : このコードを実行する前に、uid=<username> および pwd =<strong password> を適切な値に変更する必要があります。ユーザー ID に、データベースでこの操作を実行するための適切な権限があることを確認してください。

          Dim con As New SqlConnection _
    ("Server=YourServer;uid=<username>;pwd=<strong password>;database=northwind")
    Dim da As New SqlDataAdapter _
    ("Select * From MyImages", con)
    Dim MyCB As SqlCommandBuilder = New SqlCommandBuilder(da)
    Dim ds As New DataSet()

    da.MissingSchemaAction = MissingSchemaAction.AddWithKey

    Dim fs As New FileStream _
    ("C:\winnt\Gone Fishing.BMP", FileMode.OpenOrCreate, _
    FileAccess.Read)
    Dim MyData(fs.Length) As Byte
    fs.Read(MyData, 0, fs.Length)
    fs.Close()
    con.Open()
    da.Fill(ds, "MyImages")
    Dim myRow As DataRow
    myRow = ds.Tables("MyImages").NewRow()

    myRow("Description") = "This would be description text"
    myRow("imgField") = MyData
    ds.Tables("MyImages").Rows.Add(myRow)
    da.Update(ds, "MyImages")

    fs = Nothing
    MyCB = Nothing
    ds = Nothing
    da = Nothing

    con.Close()
    con = Nothing
    MsgBox ("Image saved to database")
  7. [Button2] をダブルクリックし、Button2_Click イベント ハンドラに次のコードを追加します。

    注 : このコードを実行する前に、uid=<username> および pwd =<strong password> を適切な値に変更する必要があります。ユーザー ID に、データベースでこの操作を実行するための適切な権限があることを確認してください。

          Dim con As New SqlConnection _
    ("Server=YourServer;uid=<username>;pwd=<strong password>;database=northwind")
    Dim da As New SqlDataAdapter _
    ("Select * From MyImages", con)
    Dim MyCB As SqlCommandBuilder = New SqlCommandBuilder(da)
    Dim ds As New DataSet()

    con.Open()
    da.Fill(ds, "MyImages")
    Dim myRow As DataRow
    myRow = ds.Tables("MyImages").Rows(0)

    Dim MyData() As Byte
    MyData = myRow("imgField")
    Dim K As Long
    K = UBound(MyData)

    Dim fs As New FileStream _
    ("C:\winnt\Gone Fishing2.BMP", FileMode.OpenOrCreate, _
    FileAccess.Write)
    fs.Write(MyData, 0, K)
    fs.Close()

    fs = Nothing
    MyCB = Nothing
    ds = Nothing
    da = Nothing

    con.Close()
    con = Nothing
    MsgBox ("Image retrieved")
  8. F5 キーを押して、アプリケーションをコンパイルして実行します。

  9. [(ファイルから) データベースに保存] をクリックし、SQL Server の Image フィールドに画像 C:\WinNT\Gone Fishing.bmp を読み込みます。イメージが保存されたという確認メッセージが表示された後で、テーブルを確認します。

  10. [(データベースから) ファイルに保存] をクリックし、データを SQL Server の Image フィールドからファイルに保存します。C:\WinNT\Gone Fishing2.bmp が存在することを確認します。

関連情報

Visual Basic 6.0 における同様のトピックを参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

258038
ADO Stream オブジェクトを使用して SQL Server の BLOB データへのアクセスおよび変更を行う方法
ADO.NET や Visual Basic .NET に関する一般的な情報については、次の MSDN ニュースグループを参照してください。

ADO.NET 内のディスカッション

Visual Basic .NET 内のディスカッション

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 308042 (最終更新日 2004-07-14) を基に作成したものです。


この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

ヘルプを表示

スキルを磨く

トレーニングの探索 >

新機能を最初に入手

Microsoft Insider に参加する >

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?

ご意見をいただきありがとうございます。

×