Announcement

Collapse
No announcement yet.

Bilder in SQL Server Datenbank speichern? Dringend...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bilder in SQL Server Datenbank speichern? Dringend...

    Hallo... ich weiß es ist nicht sinnvoll... aber mein Chef wills so...

    Also, wie kann ich Bilder in eine MS SQL Server DB speichern?

    Ich kenn den Datentyp image...

    und habs in visual c++ .NET mit diesem select probiert...

    insert into testdb.dbo.images values ('c:\test.jpg')

    es wird zwar was in die db geschrieben, ich bezweifle aber, dass es das bild ist...
    auslesen mit selcet bringt ADFSXD9028485...

    was muss ich also machen, um bilder in die db schreiben bzw. lesen zu können?

    mfg
    christoph

  • #2
    Hallo,
    das folgende Beispiel (allerdings "nur" für VB.NET) zeigt, wie eine Grafik in der MS SQL Server-Datenbank gespeichert wird:

    a) Datenbank-Tabelle:
    <code>
    USE tempdb
    GO
    CREATE TABLE OSPICTURES (
    RecID INTEGER NOT NULL IDENTITY PRIMARY KEY,
    Remark VARCHAR(20) NOT NULL,
    JPG IMAGE NOT NULL)
    GO
    </code>
    b) ASP.NET-Anwendung speichert die Grafik:
    <code>
    Private Const cCS As String = "data source=localhost;initial catalog=tempdb;uid=sa;pwd=sa"
    Private Const cSQL As String = "INSERT INTO OSPICTURES (Remark,JPG) VALUES (@Remark,@JPG)"
    <br>
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim iLen As Integer = Me.File1.PostedFile.ContentLength
    Dim aData(iLen) As Byte
    Me.File1.PostedFile.InputStream.Read(aData, 0, iLen)
    Dim aCon As New SqlConnection(cCS)
    aCon.Open()
    Try
    Dim aCmd As New SqlCommand(cSQL, aCon)
    With aCmd
    .Parameters.Add("@Remark", Me.TextBoxComment.Text)
    .Parameters.Add("@JPG", aData)
    .ExecuteNonQuery()
    End With
    Finally
    aCon.Close()
    End Try
    Me.Response.Redirect("WebForm2.aspx")
    End Sub
    </code>
    c) ASP.NET-Anwendung liest die Grafik aus der Datenbank aus und liefert diese an den Browser zurück:
    <code>
    Imports System.Data.SqlClient
    Imports System.IO
    ...
    Private Const cCS As String = "data source=localhost;initial catalog=tempdb;uid=sa;pwd=sa"
    Private Const cSQL As String = "SELECT JPG FROM OSPICTURES WHERE RecID=1"
    <br>
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Put user code to initialize the page here
    Dim aMS As New MemoryStream()
    Dim aCon As New SqlConnection(cCS)
    aCon.Open()
    Try
    Dim aCmd As New SqlCommand(cSQL, aCon)
    Dim aData As Byte()
    aData = DirectCast(aCmd.ExecuteScalar, Byte())
    aMS.Write(aData, 0, aData.Length)
    Dim aBM As New Bitmap(aMS)
    Me.Response.ContentType = "image/jpeg"
    aBM.Save(Me.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
    Finally
    aCon.Close()
    aMS.Close()
    End Try
    End Sub
    </code>
    Die BLOb-Daten (Binary Large Objects) der Grafik müssen beim INSERT-Aufruf als Parameter übergeben werden

    Comment

    Working...
    X