Français
Source/ Codesnippets

longtemps Sql Cordes

 

Uwe
''Pascal''
Niemeier
Hi gens!

Habe la fois un peu avec qui Possibilité gespielt, Bilder o.Ä. dans Datenbanken abzulegen. ici qui Ergebnisse...

Beim écrivons long Cordes gibt es anscheinend aucun Maximalgröße; plusieurs 100 KB sommes avec Standartfunktionen ne...aucune Problem, vorausgesetzt qui db soutenu entsprechende Feldtypen:
KompilierenMarqueSéparation
****************** 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 qui données volonté selbige beschnitten, tout autor ici une SQL-API-Possibilité zur Auswertung:
KompilierenMarqueSéparation
****************** Demo: Beliebig longtemps Cordes aus DB lesen
****************** Profan : 11.1 et höher
****************** Windows: XP SP3
****************** © by TCS (Uwe Pascal Niemeier) 022009
--Listbox-liste wird comme faute-Log verwendet
--et im Fehlerfall automatisch angezeigt.
--Es wird seulement cela 1. champ des 1. gefundenen Datensatzes ausgewertet!
--alors 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

    parameters de$
    declare Error$
    SQLError(&SQLEnv,&SQLDBC,stmt&,0,0,Error#,512,0)
    Error$=string$(Error#,0)
    cas len(Error$):addstring de$+ : +Error$
    endproc-------------------------------------------------------------

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

        parameters Exec$
        declare 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 serait trop kleinen Puffer annoncer (Dummy-Aufruf WG. Size&)

        si 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
        dispose Data#,Error#
        cas %getcount>-1:listbox$(faute,2)
        return 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 champ1 FROM TCS
        var Text$=SQLGetDataEx(Exec$)
        Text$=decode64(Text$)
        declare Text#
        dim Text#,len(Text$)+1
        char Text#,0=Text$
        assign #1,C:2TestTest.jpg------------------------Zielpfad s'il te plaît anpassen!
        erase #1
        openrw #1
        blockwrite #1,Text#,0,len(Text$)
        closerw #1
        dispose Text#
        SQLDone

Getestet (comment on voit) avec Access-dbs (*.mdb) (Access doit pas disponible son) et MS SQL Express 2005.
si qui données avec encode64() codiert volonté doit, ist möglicherweise vom Feldtyp abhängig; chez dessus genannten dbs ging es pas sans. Im Zweifelsfall ausprobieren.

peut-être kanns quelqu'un brauchen

SeeYou
Pascal
 
15.02.2009  
 




Thomas
Kallenberger
allô Pascal,
qui API sieht bien aus - je sollte cela ganze lediglich renversé avons - d.h. données aus einer Textdatei dans un Access-Tabelle apporter. peut-être hat quelqu'un une Vorschlag! la ligne pour la ligne einlesen ist irgendwie pas so prickelnd. merci pour Eure Mühe!
Liebe Grüße
Thomas
 
30.03.2010  
 




Michael
W.
cela Ganze nochmal avec Anführungszeichen et Kommentarzeichen. qui sommes irgendwo verschollen...
KompilierenMarqueSéparation
'****************** 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

KompilierenMarqueSéparation
'****************** Demo: Beliebig longtemps Cordes aus DB lesen
'****************** Profan : 11.1 et höher
'****************** Windows: XP SP3
'****************** © by TCS (Uwe Pascal Niemeier) 022009
'--Listbox-liste wird comme faute-Log verwendet
'--et im Fehlerfall automatisch angezeigt.
'--Es wird seulement cela 1. champ des 1. gefundenen Datensatzes ausgewertet!
'--alors 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

    parameters de$
    declare Error$
    SQLError(&SQLEnv,&SQLDBC,stmt&,0,0,Error#,512,0)
    Error$=string$(Error#,0)
    cas len(Error$) : addstring de$+" : "+Error$

endproc'-------------------------------------------------------------

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

    parameters Exec$
    declare 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 serait trop kleinen Puffer annoncer (Dummy-Aufruf GT. Size&)

    si 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
    dispose Data#,Error#
    cas %getcount > -1 : listbox$(faute,2)
    return 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 champ1 FROM TCS"
var Text$=SQLGetDataEx(Exec$)
Text$=decode64(Text$)
declare Text#
dim Text#,len(Text$)+1
char Text#,0 = Text$
assign #1,"C:2TestTest.jpg"'------------------------Zielpfad s'il te plaît anpassen!
erase #1
openrw #1
blockwrite #1,Text#,0,len(Text$)
closerw #1
dispose Text#
SQLDone
 
XProfan X3
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
11.08.2015  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

8.307 Views

Untitledvor 0 min.
Uwe ''Pascal'' Niemeier28.12.2023
p.specht20.11.2021
Uwe Lang20.11.2021
Manfred Barei19.11.2021
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie