Español
Fuente/ Codesnippets

Lange Sql Cuerdas

 

Uwe
''Pascal''
Niemeier
Hi Personas!

Posesiones veces una wenig con el Möglichkeit gespielt, Bilder o.Ä. en Datenbanken abzulegen. Hier el Ergebnisse...

Beim Carta langer Cuerdas hay anscheinend no Maximalgröße; mehrere 100 KB son con Standartfunktionen kein Problema, vorausgesetzt el db unterstützt entsprechende Feldtypen:
KompilierenMarcaSeparación
****************** Demo: Beliebig lange Strings in DB schreiben
****************** Profan : 11.1 und höher
****************** Windows: XP SP3
****************** kein © (Standartfunktionen)
window 50,50-500,500
declare Exec$
--Access
var mdb$=X:ExperimenteSQL-APIAccessTest1.mdb
var Init$=Driver={Microsoft Access Driver (*.mdb)};Dbq=+mdb$+;Uid=;Pwd=;
--SQL Express
var Init$=Driver={SQL Server};Server=(local)SQLExpress;UID=sa;PWD=sql;
SQLInit(Init$)
Exec$=DROP TABLE TCS
SQLExec Exec$,0---Fehlermeldung, wenn db nicht vorhanden => Egal!
Exec$=CREATE TABLE TCS (Feld1 MEMO)---------Access > FeldTyp MEMO
Exec$=CREATE TABLE TCS (Feld1 VARCHAR(MAX))--SQLExpress > FeldTyp VARCHAR(MAX)
SQLExec Exec$,0--db anlegen
declare Text#
var File$=C:2TestBild2.jpg-----------------------Quellpfad bitte anpassen!
var Size&=filesize(File$)
dim Text#,Size&
assign #1,File$
openrw #1
blockread(#1,Text#,0,Size&)
closerw #1
var Text$=char$(Text#,0,Size&)
dispose Text#
Text$=encode64(Text$)
Exec$=INSERT INTO TCS (Feld1) VALUES (+Text$+)
SQLExec Exec$,0--keine Größenbegrenzung beim Schreiben!
SQLDone
waitkey

Lediglich beim Einlesen el Daten voluntad selbige beschnitten, por lo tanto hier una SQL-API-Möglichkeit a Auswertung:
KompilierenMarcaSeparación
****************** Demo: Beliebig largo Cuerdas de DB lesen
****************** Profano : 11.1 y höher
****************** Windows: XP SP3
****************** © by TCS (Uwe Pascal Niemeier) 022009
--Listbox-Liste se como Fehler-Log verwendet
--y en el Fehlerfall automáticamente muestra.
--Lo se sólo el 1. Feld des 1. gefundenen Datensatzes ausgewertet!
--Also SQL-Abfrage entsprechend einrichten!
window 50,50-500,500
 $H Windows.ph
def SQLAllocHandle(3) !odbc32,SQLAllocHandle
def SQLError(8 ) !odbc32,SQLError
def SQLExecDirect(3) !odbc32,SQLExecDirect
def SQLGetData(6) !odbc32,SQLGetData
def SQLFetch(1) !odbc32,SQLFetch
def SQLFreeHandle(2) !odbc32,SQLFreeHandle

proc SQLErrorLog-----------------------------------------SQLErrorLog

    parámetros Von$
    declarar Error$
    SQLError(&SQLEnv,&SQLDBC,stmt&,0,0,Error#,512,0)
    Error$=cadena$(Error#,0)
    caso len(Error$):addstring Von$+ : +Error$
    ENDPROC-------------------------------------------------------------

    proc SQLGetDataEx---------------------------------------SQLGetDataEx

        parámetros Exec$
        declarar Data#,Data$,Size&,stmt&,Error#
        dim Error#,512
        clearlist
        SQLAllocHandle(3,&SQLDBC,addr(stmt&))--3=SQL_HANDLE_STMT
        SQLErrorLog(SQLAllocHandle)
        SQLExecDirect(stmt&,addr(Exec$),-3)-- -3=SQL_NTS
        SQLErrorLog(SQLExecDirect)
        dim Data#,1--Dummy-DIM
        SQLFetch(stmt&)
        SQLErrorLog(SQLFetch)
        SQLGetData(stmt&,1,99,Data#,0,addr(Size&))--99=SQL_C_DEFAULT
        --Fehlerabfrage sería a pequeño Puffer informe (Dummy-Aufruf ca. Size&)

        if Size&>0

            dim Data#,Size&+1
            SQLGetData(stmt&,1,99,Data#,Size&+1,addr(Size&))--99=SQL_C_DEFAULT
            SQLErrorLog(SQLGetData)
            Data$=char$(Data#,0,Size&)

        endif

        SQLFreeHandle(3,stmt&)--3=SQL_HANDLE_STMT
        disponer Data#,Error#
        caso %getcount>-1:listbox$(Fehler,2)
        volver Data$
        ENDPROC-------------------------------------------------------------
        ---Access
        var mdb$=X:ExperimenteSQL-APIAccessTest1.mdb
        var Init$=Driver={Microsoft Access Driver (*.mdb)};Dbq=+mdb$+;Uid=;Pwd=;
        --SQL Express
        var Init$=Driver={SQL Server};Server=(local)SQLExpress;UID=sa;PWD=sql;
        SQLInit(Init$)
        var Exec$=SELECT TOP 1 Feld1 FROM TCS
        var Texto$=SQLGetDataEx(Exec$)
        Texto$=decode64(Texto$)
        declarar Texto#
        dim Texto#,len(Texto$)+1
        char Texto#,0=Texto$
        assign #1,C:2TestTest.jpg------------------------Zielpfad Por favor, adaptar!
        erase #1
        openrw #1
        blockwrite #1,Texto#,0,len(Texto$)
        closerw #1
        disponer Texto#
        SQLDone

Getestet (cómo sieht) con Access-dbs (*.mdb) (Access muß no verfügbar ser) y MS SQL Express 2005.
Ob el Daten con encode64() codiert voluntad necesario, es möglicherweise vom Feldtyp abhängig; en oben genannten dbs ging no sin. Im Zweifelsfall ausprobieren.

Tal vez kanns alguien brauchen

SeeYou
Pascal
 
15.02.2009  
 




Thomas
Kallenberger
¡Hola Pascal,
el API sieht bien de - Yo debería todos lediglich umgekehrt haben - d.h. Daten de uno Textdatei en un Access-Tabla bringen. Tal vez ha alguien Vorschlag! Línea para Línea einlesen es irgendwie no así prickelnd. Gracias para Eure Mühe!
Liebe Grüße
Thomas
 
30.03.2010  
 




Michael
W.
el Ganze otra vez con Anführungszeichen y Kommentarzeichen. El son irgendwo verschollen...
KompilierenMarcaSeparación
'****************** Demo: Beliebig lange Strings in DB schreiben
'****************** Profan : 11.1 und höher
'****************** Windows: XP SP3
'****************** kein © (Standartfunktionen)
window 50,50-500,500
declare Exec$
'--Access
var mdb$="X:ExperimenteSQL-APIAccessTest1.mdb"
var Init$="Driver={Microsoft Access Driver (*.mdb)};Dbq=+mdb$+;Uid=;Pwd=;"
'--SQL Express
var Init$="Driver={SQL Server};Server=(local)SQLExpress;UID=sa;PWD=sql;"
SQLInit(Init$)
Exec$="DROP TABLE TCS"
SQLExec Exec$,0'---Fehlermeldung, wenn db nicht vorhanden => Egal!
Exec$="CREATE TABLE TCS (Feld1 MEMO)"'---------Access > FeldTyp MEMO
Exec$="CREATE TABLE TCS (Feld1 VARCHAR(MAX))"'--SQLExpress > FeldTyp VARCHAR(MAX)
SQLExec Exec$,0'--db anlegen
declare Text#
var File$="C:2TestBild2.jpg"'-----------------------Quellpfad bitte anpassen!
var Size&=filesize(File$)
dim Text#,Size&
assign #1,File$
openrw #1
blockread(#1,Text#,0,Size&)
closerw #1
var Text$=char$(Text#,0,Size&)
dispose Text#
Text$=encode64(Text$)
Exec$="INSERT INTO TCS (Feld1) VALUES (" + "Text$" + ")"
SQLExec Exec$,0'--keine Größenbegrenzung beim Schreiben!
SQLDone
waitkey

KompilierenMarcaSeparación
'****************** Demo: Beliebig largo Cuerdas de DB lesen
'****************** Profano : 11.1 y höher
'****************** Windows: XP SP3
'****************** © by TCS (Uwe Pascal Niemeier) 022009
'--Listbox-Liste se como Fehler-Log verwendet
'--y en el Fehlerfall automáticamente adecuado.
'--Lo se sólo el 1. Feld des 1. gefundenen Datensatzes ausgewertet!
'--Also SQL-Abfrage entsprechend einrichten!
window 50,50-500,500
 $H Windows.ph
def SQLAllocHandle(3) !odbc32,SQLAllocHandle
def SQLError(8 ) !odbc32,SQLError
def SQLExecDirect(3) !odbc32,SQLExecDirect
def SQLGetData(6) !odbc32,SQLGetData
def SQLFetch(1) !odbc32,SQLFetch
def SQLFreeHandle(2) !odbc32,SQLFreeHandle

proc SQLErrorLog'-----------------------------------------SQLErrorLog

    parámetros Von$
    declarar Error$
    SQLError(&SQLEnv,&SQLDBC,stmt&,0,0,Error#,512,0)
    Error$=cadena$(Error#,0)
    caso len(Error$) : addstring Von$+" : "+Error$

ENDPROC'-------------------------------------------------------------

proc SQLGetDataEx'---------------------------------------SQLGetDataEx

    parámetros Exec$
    declarar Data#,Data$,Size&,stmt&,Error#
    dim Error#,512
    clearlist
    SQLAllocHandle(3,&SQLDBC,addr(stmt&))'--3=SQL_HANDLE_STMT
    SQLErrorLog("SQLAllocHandle")
    SQLExecDirect(stmt&,addr(Exec$),-3)'-- -3=SQL_NTS
    SQLErrorLog("SQLExecDirect")
    dim Data#,1'--Dummy-DIM
    SQLFetch(stmt&)
    SQLErrorLog("SQLFetch")
    SQLGetData(stmt&,1,99,Data#,0,addr(Size&))'--99=SQL_C_DEFAULT
    '--Fehlerabfrage sería a pequeño Puffer informe (Dummy-Aufruf ca. Size&)

    if Size& > 0

        dim Data#,Size&+1
        SQLGetData(stmt&,1,99,Data#,Size&+1,addr(Size&))'--99=SQL_C_DEFAULT
        SQLErrorLog("SQLGetData")
        Data$=char$(Data#,0,Size&)

    endif

    SQLFreeHandle(3,stmt&)'--3=SQL_HANDLE_STMT
    disponer Data#,Error#
    caso %getcount > -1 : listbox$(Fehler,2)
    volver Data$

ENDPROC'-------------------------------------------------------------

'---Access
var mdb$="X:ExperimenteSQL-APIAccessTest1.mdb"
var Init$="Driver={Microsoft Access Driver (*.mdb)};Dbq=+mdb$+;Uid=;Pwd=;"
'--SQL Express
var Init$="Driver={SQL Server};Server=(local)SQLExpress;UID=sa;PWD=sql;"
SQLInit(Init$)
var Exec$="SELECT TOP 1 Feld1 FROM TCS"
var Texto$=SQLGetDataEx(Exec$)
Text$=decode64(Texto$)
declarar Texto#
dim Texto#,len(Texto$)+1
char Texto#,0 = Texto$
assign #1,"C:2TestTest.jpg"'------------------------Zielpfad Por favor, adaptar!
erase #1
openrw #1
blockwrite #1,Texto#,0,len(Texto$)
closerw #1
disponer Texto#
SQLDone
 
XProfan X3
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
11.08.2015  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

8.308 Views

Untitledvor 0 min.
Uwe ''Pascal'' Niemeier28.12.2023
p.specht20.11.2021
Uwe Lang20.11.2021
Manfred Barei19.11.2021
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie