Imports System
Imports System.Data
Imports Oracle.DataAccess.Client
Imports Oracle.DataAccess.Types
Imports System.IO
Imports System.Text
 
Module Module1
 
    Sub Main()
 
        'Step 1
        ' Connect to database
        ' Note: Modify User Id, Password, Data Source as per your database setup
        Dim constr As String = "User Id=scott;Password=tiger;Data Source=orcl9i"
        Dim con As OracleConnection = New OracleConnection(constr)
        con.Open()
        Console.WriteLine("Connected to database!")
 
        ' Step 2
        ' Note: Modify the Source and Destination location
        ' of the image as per your machine settings
        Dim SourceLoc As String = "D:/Images/photo.jpg"
        Dim DestinationLoc As String = "d:/Images/TestImage.jpg"
 
        ' providing read access to the file
        Dim fs As FileStream = New FileStream(SourceLoc, FileMode.Open, FileAccess.Read)
 
        ' Create a byte array of file stream length
        Dim ImageData As Byte()
        ReDim ImageData(fs.Length)
 
        'Read block of bytes from stream into the byte array
        fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length))
 
        'Close the File Stream
        fs.Close()
 
 
        ' Step 3
        ' Creating Anonymous PL/SQL block string
        Dim block As String = " BEGIN " & _
                              " INSERT INTO testblob (id, photo) values (100, :1) ;" & _
                              " SELECT photo into :2 from testblob WHERE id = 100 ;" & _
                              " end ;"
 
        ' Set command to create Anonymous PL/SQL Block
        Dim cmd As OracleCommand = New OracleCommand()
        cmd.CommandText = block
        cmd.Connection = con
 
        ' Since executing an anonymous PL/SQL block, setting the command type
        ' as Text instead of StoredProcedure
        cmd.CommandType = CommandType.Text
 
 
        ' Step 4
        ' Setting Oracle parameters
        ' Bind the parameter as OracleDbType.Blob to command for inserting image
        Dim param As OracleParameter = cmd.Parameters.Add("blobtodb", OracleDbType.Blob)
        param.Direction = ParameterDirection.Input
 
        ' Assigning Byte Array to Oracle Parameter
        param.Value = ImageData
 
        ' Bind the parameter as OracleDbType.Blob to command for retrieving the image
        Dim param2 As OracleParameter = cmd.Parameters.Add("blobfromdb", OracleDbType.Blob)
        param2.Direction = ParameterDirection.Output
 
 
        Try
 
            ' Step 5
            ' Execute the Anonymous PL/SQL Block. The anonymous PL/SQL block inserts the
            ' image to the database and then retrieves the images as an output parameter
            cmd.ExecuteNonQuery()
            Console.WriteLine("Image file inserted to database from " + SourceLoc)
 
 
            ' Step 6
            ' Save the retrieved image to the DestinationLoc in the file system
            ' Create a byte array
            Dim byteData As Byte()
            Dim Paramvalue As OracleBlob
            Paramvalue = cmd.Parameters(1).Value
 
            ' fetch the value of Oracle parameter into the byte array
            byteData = CType((Paramvalue.Value), Byte())
 
            ' get the length of the byte array
            Dim ArraySize As Integer = New Integer()
            ArraySize = byteData.GetUpperBound(0)
 
            ' Write the Blob data fetched from database to the filesystem at the destination location
            Dim fs1 As FileStream = New FileStream(DestinationLoc, FileMode.OpenOrCreate, FileAccess.Write)
            fs1.Write(byteData, 0, ArraySize)
            fs1.Close()
 
            Console.WriteLine("Image saved to " + DestinationLoc + " successfully !")
            Console.WriteLine("")
            Console.WriteLine("***********************************************************")
            Console.WriteLine("Before running this application again, execute 'Listing 1' ")

            Console.WriteLine("given in 'Create Database Objects' section in the How-to.")
            Console.WriteLine("***********************************************************")
 
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            cmd.Dispose()
            con.Close()
            con.Dispose()
        End Try
 
    End Sub
 
End Module

E-mail this page
Printer View Printer View
Oracle Is The Information Company About Oracle | Oracle RSS Feeds | Careers | Contact Us | Site Maps | Legal Notices | Terms of Use | Privacy