2010-07-29 10 views
0

J'essaie de convertir un fichier pdf en données binaires et de l'enregistrer dans ma base de données SQL. Quand je viens de sortir le pdf (de binaire) à l'utilisateur, cela fonctionne parfaitement.Enregistrer binaire en sql

Le champ dans ma base de données pour les données binaires est l'image.

Voici ce que je fais atm:

Set oFileStream = Server.CreateObject("ADODB.Stream") 
oFileStream.Open 
oFileStream.Type = 1 'Binary 
oFileStream.LoadFromFile strPDF 

Et si je fais Response.BinaryWrite (oFileStream.Read) les PDF pops à l'utilisateur.

Ensuite, je veux stocker dans SQL:

Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "xxx" 
strSQL = "INSERT INTO vAnalysesHistory (datetime,chosendatetime,companyid,code,content) VALUES (?,?,?,?,?)" 
Set cmd = Server.CreateObject("ADODB.Command") 
Set cmd.ActiveConnection = Conn 
cmd.CommandType = adCmdText 
cmd.CommandText = strSQL 
cmd.Parameters.Append cmd.CreateParameter("@datetime", adDate, adParamInput, 255, now) 
cmd.Parameters.Append cmd.CreateParameter("@chosendatetime", adDate, adParamInput, 255, Request.Form("date")) 
cmd.Parameters.Append cmd.CreateParameter("@companyid", adVarChar, adParamInput, 255, Request.Form("companyid")) 
cmd.Parameters.Append cmd.CreateParameter("@code", adVarChar, adParamInput, 255, Request.Form("code")) 
cmd.Parameters.Append cmd.CreateParameter("@content", adLongVarBinary, adParamInput, 8000, oFileStream.Read) 
cmd.Execute() 

Conn.close 
Set Conn = Nothing 

et je reçois juste cette erreur: application utilise une valeur de type incorrect pour l'opération en cours. J'ai essayé un tas d'autres choses aussi avec d'autres erreurs.

+0

Quelle est la taille des fichiers pdf? Plus de 8000/chacun? –

+0

Vous obtiendrez cette erreur si les données sont trop volumineuses pour la colonne. – egrunin

+0

La taille est de 48 kb. –

Répondre

0

Lire le flux dans un octet d'abord, puis passer la variable d'octets au paramètre @content

+0

Pouvez-vous me donner un exemple de code? –

+0

Y at-il une méthode sur oFileStream appelée ReadBinary ou quelque chose comme ça? Si oui, vous pouvez faire Dim b = oFileStream.ReadBinary et ensuite utiliser b comme paramètre –