Source/ Codesnippets | | | | 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 |
| | | | |
| | 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 |
| | | | |
| | 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 X3System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 11.08.2015 ▲ |
| |
|
Zum QuelltextOptions du sujet | 8.346 Views |
Themeninformationencet Thema hat 3 participant: |