Anmelden

View Full Version : Grafik per SQL in ein Blob importieren



Seiten : 1 [2]

B.Hauser
02-04-15, 08:20
STRSQL is wie so vieles "stabilized", und wird seit Release V4R5 nicht mehr weiter entwickelt.
Wenn Du die Abfrage mit dem IBM i Navigator ausführst, siehst Du die Hex-Werte in der Spalte. (BLOB wird ansonsten nicht umgesetzt!)

... um COMMIT *ALL zu setzen und verwenden, muss man schon sehr genau wissen was man tut, da man ALLES sperrt! COMMIT *CHG oder *CS reichen eigentlich immer aus.

Birgitta

Robi
02-04-15, 08:58
festzustellen, ob alles 'ordentlich' drin ist,
indem du es wieder ausliest und in ein PDF speicherst.


--> schon 36 Teilnehmer an der Umfrage!

Robi
02-04-15, 13:15
hier mal ein Uralt Bsp. aus dem Netz, das wir damals für die ersten Tests verwendet haben


<code></code><code>D SQL_FILE_READ...
D C CONST(2)
D SQL_FILE_CREATE...
D C CONST(8)
D SQL_FILE_OVERWRITE...
D C CONST(16)
D SQL_FILE_APPEND...
D C CONST(32)

D ITEM S 5P 0
D PIC S SQLTYPE(BLOB_FILE)
D OUT S SQLTYPE(BLOB_FILE)

C/EXEC SQL SET OPTION NAMING=*SYS,
C+ COMMIT=*NONE
C/END-EXEC
*
************************************************** *********
* CREATE A FILE WITH A BLOB COLUMN
************************************************** *********
C/EXEC SQL DROP TABLE ITEMPIC
C/END-EXEC
*
************************************************** *********
* CREATE A FILE WITH A BLOB COLUMN
************************************************** *********
C/EXEC SQL
C+ CREATE TABLE ITEMPIC
C+ (ITEMNO DEC(5 , 0) NOT NULL,
C+ PICTURE BLOB(8M) WITH DEFAULT NULL,
C+ PRIMARY KEY( ITEMNO )
C+ )
C/END-EXEC
*
************************************************** *********
* WRITE AN ITEM TO THE FILE
*
* PIC_FO = FILE OPTIONS (SEE SQL CONSTANTS, ABOVE)
* PIC_NAME = FILE NAME TO SET BLOB TO
* PIC_NL = LENGTH OF FILE NAME
*
* TEST.JPG WILL BE WRITTEN TO THE 2ND COLUMN OF THE FILE
************************************************** *********
C EVAL ITEM = 10001
C EVAL PIC_FO = SQL_FILE_READ
C EVAL PIC_NAME = '/TMP/TEST.BMP' MIT BMP !!!!!
C EVAL PIC_NL = %LEN(%TRIMR(PIC_NAME))
*
C/EXEC SQL INSERT INTO ITEMPIC VALUES (:ITEM,:PIC)
C/END-EXEC
C EVAL ITEM = 10002
C EVAL PIC_FO = SQL_FILE_READ
C EVAL PIC_NAME = '/TMP/TEST.PDF' MIT PDF !!!!
C EVAL PIC_NL = %LEN(%TRIMR(PIC_NAME))
*
C/EXEC SQL INSERT INTO ITEMPIC VALUES (:ITEM,:PIC)
C/END-EXEC
*
************************************************** *********
* READ A RECORD
*
*
* OUT_FO = FILE OPTIONS (CREATE FILE OR OVERWRITE IT)
************************************************** *********
C EVAL ITEM = 10001
C EVAL OUT_FO = SQL_FILE_OVERWRITE
C EVAL OUT_NAME = '/TMP/TESTOUT.BMP'
C EVAL OUT_NL = %LEN(%TRIMR(OUT_NAME))

C/EXEC SQL SELECT PICTURE
C+ INTO :OUT
C+ FROM ITEMPIC
C+ WHERE ITEMNO = :ITEM
C/END-EXEC
C EVAL ITEM = 10002
C EVAL OUT_FO = SQL_FILE_OVERWRITE
C EVAL OUT_NAME = '/TMP/TESTOUT.PDF'
C EVAL OUT_NL = %LEN(%TRIMR(OUT_NAME))

C/EXEC SQL SELECT PICTURE
C+ INTO :OUT
C+ FROM ITEMPIC
C+ WHERE ITEMNO = :ITEM
C/END-EXEC

C EVAL *INLR</code><code> <code>= *ON
</code> </code>

Garmin23
17-04-15, 08:41
wie Du siehst arbeite ich aber doch mit Commitment Control








sony e1 handytasche (http://www.hulle6.com/category-sony-xperia-e1-zubehoer-184.html)