Avatar billede cht Nybegynder
21. marts 2002 - 20:57 Der er 1 kommentar og
1 løsning

Tilføje binære (binary) data til MySQL database

Er der nogen der har koden til at tilføje binære (binary) data til MySQL database, nedenstående kan bruges til Access (mdb) database, men det virker altså ikke til MySQL:

Jeg betaler gerne, hvis der er en der kan komme med en løsning!

<%
        Const adTypeBinary = 1
        Set objStream = Server.CreateObject("ADODB.Stream")
        objStream.Open
        objStream.Type = adTypeBinary
        objStream.LoadFromFile Server.Mappath("fil.gif")

            Set rs = Server.CreateObject("ADODB.Recordset")
            rs.Open "binarydb", strConn, 2, 2
            rs.AddNew
                rs("writer") = session("navn")
                rs("filedata").AppendChunk objStream.Read
            rs.Update
           
            rs.Close
            Set rs = Nothing
        objStream.Close
        Set objStream = Nothing
%>


Jeg har prøvet med nedenstående og det bliver også tilføjet til min MySQL database, men jeg kan ikke få udskrivet det rigtigt fra databasen:


<%
  SQLserveradr     =    "localhost"
  SQLdatabase     =    "test"
  SQLlogin     =    "admin"
  SQLpassword     =    "admin"

  strConn = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"

'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
    char = Mid(StringStr,i,1)
    getByteString = getByteString & chrB(AscB(char))
Next
End Function

'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
    getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function

Function StringToBinary(S)
    Dim i, ByteArray
    For i=1 To Len(S)
        ByteArray = ByteArray & ChrB(Asc(Mid(S,i,1)))
    Next
    StringToBinary = ByteArray
End Function


        Const adTypeBinary = 1
        Set objStream = Server.CreateObject("ADODB.Stream")
        objStream.Open
        objStream.Type = adTypeBinary
        objStream.LoadFromFile Server.Mappath("fil.gif")


    Function Validate(String)
        if String = "" then
            Validate = " "
        else
            Validate = Replace(Replace(String,"'","''"),Chr(0),"")
        end if
    End Function

    Function ValidateNumber(String)
        if not IsNumeric(String) or String = "" then
            ValidateNumber = 0
        else
            ValidateNumber = String
        end if
    End Function



    SQL = "INSERT INTO binarydb (" &_

        "filedata" &_

        ") VALUES (" &_

    "'"     & Validate(getString(objStream.Read)) & "'" &_
    ")"

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open strConn

    Conn.Execute SQL

    Conn.Close
    Set Conn = Nothing


        objStream.Close
        Set objStream = Nothing
%>


Jeg bruger følgende til at udskrive fra databasen, men det bliver som sagt ikke udskrevet rigtigt:

<%
    Set objRS = Server.CreateObject("ADODB.Recordset")
    strQ = "SELECT * FROM binarydb order by id desc"
    objRS.Open strQ, strConn, 2, 3, &H0001

    if not objRS.EOF then
        response.binaryWrite getByteString(getString(objRS("filedata")))
    else
        response.redirect "1x1.gif"
    end if

    objRS.Close
    Set objRS = Nothing

%>
Avatar billede dmcn Praktikant
21. marts 2002 - 21:02 #1
Spørgsmål må kun oprettes en gang. Luk det ene af dem.
- n0rmality, coadmin
Avatar billede cht Nybegynder
26. marts 2002 - 20:54 #2
Fint, se følgende spørgsmål: http://www.eksperten.dk/spm/188301
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester