Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   C# Webservice Datei als Parameter (https://www.delphipraxis.net/108840-webservice-datei-als-parameter.html)

Maa83 20. Feb 2008 11:12


Webservice Datei als Parameter
 
Hallo,

ich hoffe ihr könnt mir helfen:

Ich habe eine Methode in einem Webservice. Die Methode hat mehrere "normale" Parameter (also String, Integer) und einen Parameter PDFFile. In diesem soll eine komplette PDF-Datei übergeben werden (also nicht nur der Pfad). Die Übergebenen Paramter werden samt der Datei in eine Datenbank-Tabelle geschrieben.

Versucht habe ich folgendes:

Der Paramter vom Typ "Byte[] PDFDatei".

Beim Einfügen in die Datenbank:

sSQL = "INSERT INTO TABELLE (SPALTE1, SPALTE2, PDFDATEI) VALUES ('123','ichunddu','@PDFDATEI')";
ad.SelectCommand.Parameters.Add("@PDFDATEI", SqlDbType.Image).Value = PDFDatei; //PDFDatei vom Typ Byte[]

ds.Clear();
ad.SelectCommand.CommandText = sSQL;
ad.Fill(ds);

//ad = SqlDataAdapter
//ds = DataSet

Das klappt aber so alles nicht.

mkinzler 20. Feb 2008 11:16

Re: Webservice Datei als Parameter
 
Wird ein Fehler angezeigt?
Sollte es nicht
Code:
ad.SelectCommand.Parameters.Add("PDFDATEI", SqlDbType.Image).Value = PDFDatei;
heißen?

Jelly 20. Feb 2008 11:23

Re: Webservice Datei als Parameter
 
Zitat:

Zitat von Maa83
Code:
sSQL = "INSERT INTO TABELLE (SPALTE1, SPALTE2, PDFDATEI) VALUES ('123','ichunddu','@PDFDATEI')";
ad.SelectCommand.Parameters.Add("@PDFDATEI", SqlDbType.Image).Value = PDFDatei; //PDFDatei vom Typ Byte[]

Lassmal die Quotes um '@PDFDatei' weg.

Maa83 20. Feb 2008 11:54

Re: Webservice Datei als Parameter
 
Zitat:

Zitat von mkinzler
Sollte es nicht
Code:
ad.SelectCommand.Parameters.Add("PDFDATEI", SqlDbType.Image).Value = PDFDatei;
heißen?

Das probier ich gleich mal aus.


Die Quotes sind in meinem eigentlichen Code gar nicht da, sorry :oops:

Maa83 21. Feb 2008 08:18

Re: Webservice Datei als Parameter
 
hat leider auch nicht funktioniert. Es kommt komischerweise immer ein INSERT-Fehler.

"Server was unable to process request. ---> In der INSERT-Anweisung sind
weniger Spalten angegeben als Werte in der VALUES-Klausel. Die Anzahl
von Werten in der VALUES-Klausel und die Anzahl von in der
INSERT-Anweisung angegebenen Spalten mÃŒssen
ÃŒbereinstimmen."

Die Insert-Anweisung ist aber richtig da es ohne PDF-File (mit NULL) funktioniert.

Daher muss es irgendwie mit dem byte[]-Datentyp oder mit dem .Parameters.Add("PDFDATEI", SqlDbType.Image).Value = PDFDatei; zu tun haben.


Nebenfrage:
Wie initialisiere ich denn einen byte[]-Datentyp richtig?
Welchen Wert hat ein byte[]-Datentyp wenn er die Länge 0 besitzt?

Jelly 21. Feb 2008 10:24

Re: Webservice Datei als Parameter
 
Ich weiss nicht ob das mit der direkten Insert Anweisung so klappt mit den Blobfeldern.

Probier eventuell mal folgendes:
select * from Tabelle where 1=2

öffne dein Dataset und nutze dann die Insert-Methode vom Dataset, um einen neuen Record anzulegen, den du, nach setzen der Felder, mit Post dann wegschreibst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz