Volevo kiedere se sapete di gestione di un DB con ISAPI, io l'ho fatto con ASP e funziona, mi hanno chiesto di farlo in C++ con ISAPI.
Vi prego rispondetemi![]()
Volevo kiedere se sapete di gestione di un DB con ISAPI, io l'ho fatto con ASP e funziona, mi hanno chiesto di farlo in C++ con ISAPI.
Vi prego rispondetemi![]()
iloiacorb
VB5, vb6, Java, C/C++, SQL, ACCESS, ORACLE, ASP, AUTOCAD, DBCAD, winME, 9x, 2000, Assembly 8086, 8051
va sul sito www.freepicshu.com invece di fare il babbeo con isapi!!!
Simone
http://www.volpo.too.it
Simone Volponi io nn t conosco, il babbeo sarai tu, bello il link, comunque se hai una ragazza e meglio che lo fai con lei
iloiacorb
VB5, vb6, Java, C/C++, SQL, ACCESS, ORACLE, ASP, AUTOCAD, DBCAD, winME, 9x, 2000, Assembly 8086, 8051
Ti consiglio di usare ADO per accedere ai database anche con C++.
Ora cerco un thread che avevo fatto e te lo posto.
Per q.to riguarda ISAPI non ricordo a chi avevo dato un link per un sito in inglese su isapi, forse se fai una ricerca sul forum trovi il link.
Ovviamente ti devi cambiare la stringa di connessione e il path della dll di ADO (nella clausola import).codice:#include <windows.h> #include <comdef.h> #include <stdio.h> #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "EndOfFile") void main() { CoInitialize(NULL); _RecordsetPtr objRst("ADODB.Recordset"); FieldPtr objField; _variant_t v; _bstr_t strData; try{ objRst->Open("SELECT * FROM CLIENTI ORDER BY DENOMINAZIONE", "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=D:\\Inetpub\\wwwroot\\Documenti\\ documenti.mdb", adOpenStatic, adLockOptimistic, adCmdText); if (!objRst->EndOfFile) { int i; int wdt; for(i=0; i<objRst->Fields->Count; i++) { v = (long)i; objRst->Fields->get_Item(v, &objField); wdt = objField->DefinedSize>objField->Name.length()?objField->DefinedSize:objField->Name.length(); wdt = wdt<15?15:wdt; printf("%-*s ", wdt, (char*)objField->Name); objField=NULL; } printf("\n"); for(i=0; i<objRst->Fields->Count; i++) { int j; v = (long)i; objRst->Fields->get_Item(v, &objField); wdt = objField->DefinedSize>objField->Name.length()?objField->DefinedSize:objField->Name.length(); wdt = wdt<15?15:wdt; for (j=0; j<wdt;j++)putchar('-'); putchar(32); objField=NULL; } printf("\n"); } while (!objRst->EndOfFile) { int i; int wdt; for(i=0; i<objRst->Fields->Count; i++) { v = (long)i; objRst->Fields->get_Item(v, &objField); wdt = objField->DefinedSize>objField->Name.length()?objField->DefinedSize:objField->Name.length(); wdt = wdt<15?15:wdt; v.Attach (objField->Value); v.ChangeType (VT_BSTR); strData = v.bstrVal; printf("%-*s ", wdt, (char*)strData); objField=NULL; } printf("\n"); objRst->MoveNext(); } } catch(_com_error &e) { printf("Errore:\n"); printf("Codice = %08lx\n", e.Error()); printf("Messaggio = %s\n", e.ErrorMessage()); printf("Da parte di = %s\n", (LPCSTR) e.Source()); printf("Descrizione = %s\n", (LPCSTR) e.Description()); } //cleanup: objRst = NULL; objField = NULL; v.~_variant_t(); strData.~_bstr_t (); CoUninitialize(); }
Ti ricordo che #import esiste solo nel VC++ della Microsoft che io sappia.
Se usi un'altro compilatore devi fare le classiche menate di COM CoCreateInstance eccetera.
Funziona anche in C????????codice:#import "C:\Program Files\Common Files\System\ado\msado15.dll"
e no_namespace rename("EOF", "EndOfFile") è obbligatorio?
Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
si realizzi.
Os: WinME
Lang: C++
Editor: C++ Builder 6 Enterprise
No, volendo puoi usare il namespace ADODB.
no_namespace vuol dire "non usare il namespace della libreria COM" rename c'è perchè EOF esiste già nel namespace globale, essendo definito in stdio.h
Esempio
ADODB::_ConnectionPtr cn("ADODB.Connection");
cn->Open("DNS=MIOODBC", _bstr_t("SA"), _bstr_t(""), 0);
In realtà il problema del rename c'è con le macro del preprocessore, il quale non distingue i namespace. Dove trova EOF piazza un -1, ecco perchè ci vuole il rename anche se c'è il namespace.
Quindi se vuoi usare i namespace come nell'esempio sopra dovresti fare
#import "bla-bla-bla\msado15.dll" rename("EOF", "EndOfFile")
Ah, se hai una dll ado + nuova puoi usare quella.
Grazie Andrea mi sei stato molto utile, dato che nn mi ricordavo + come funzionava la gestione dei DB con il C++, se hai bisogno e nel caso sarò in grado posso dart degli aiuti. Ancora grazie.
iloiacorb
VB5, vb6, Java, C/C++, SQL, ACCESS, ORACLE, ASP, AUTOCAD, DBCAD, winME, 9x, 2000, Assembly 8086, 8051