Newsgroup: it.comp.lang.delphi
Titolo: D7 connettere Oracle X10

ho installato oracle express, ed ora volevo provare ad agganciarlo 
tramite SQLConnection (dbexpress)
 
creato una tabella tramite pannello di controllo Oracle.
 
imposto Driver, user/password, ma il problema e' DatabaseName,
a diffrenza di Firebird non c'e' un nomedb.fdb, trovo nella cartella 
oracleexe/app/XE/admin vari files .trc
 
ho provato a impostare /porta/XE => 1531/XE
 
potete darmi qualche suggerimento ?

1) sei OT
 
2) siccome con fb usi un nome di file, e' scontato che tutti i database lavorino cosi?  
Per la cronaca, tra quelli che ho usato io SOLO fb e interbase usano un nome di file....
 
3) ti sei fatto un giro per vedere, A PRESCINDERE DAL LINGUAGGIO, come si impostano i parametri per connettersi ad un database Oracle?
 
4) sei al corrente dei bug del driver dbx per oracle di delphi7?
 
A.


risolti i punti 1-3, sono passato al 4 e trovato sul sito Embarcadero,
la path da apportare alla unit sqlexpr.pas
 
applicata e sostituita la unit di D2007 (dato che e' piu' recente di 
quella di D7).
 
provo la connessione SQLConnection1.Connected := True;
 
"unable to load dbxora30.dll (Error code 126) it may be missing on 
system path"
 
dbxora30.dll non e' presente nel mio pc (non solo su Rad/5.0, ma in 
nessun'altra directory.
ho anche cercato senza trovare, dove scaricare dbxora30.dll
 
E' risolvibile, o bisogna passare ad altri driver (DevArt ?) ODBC 
proprio non lo considero neppure.
 
-- path suggerita da embarcadero
 
function GetBlobLength(DataSet: TCustomSQLDataSet; FieldNo: Integer): Int64;
var
   IsNull: LongBool;
begin
   Result := 0;
   if not DataSet.EOF then
   begin
     if DataSet.MaxBlobSize = 0 then
       exit;
     // todo -cwst : update 83 1L 20100312
 
 
// resolving problem with empty_lob ora-24801 in dbexpress(empty lob = 
error, null not!)
 
// try except added!
 
try
 
DataSet.FDBXReader.ByteReader.GetByteLength(FieldNo-1, Result, isNull);
 
except
 
isNull := true; // Happens only for an empty lob field, not null!
 
end;
 
     if isNull then
       Result := 0;
   end;
   DataSet.CurrentBlobSize := Result;
 
(*var
   IsNull: LongBool;
begin
   Result := 0;
   if not DataSet.EOF then
   begin
     if DataSet.MaxBlobSize = 0 then
       exit;
     DataSet.FDBXReader.ByteReader.GetByteLength(FieldNo-1, Result, isNull);
     if isNull then
       Result := 0;
   end;
   DataSet.CurrentBlobSize := Result;
*)
end;

>
su altro 3d si parla di opensource,
beh, mi sono preso la briga di installare Lazarus (delphi rogna con dbx, 
figuriamoci un tool open...)
e invece sorpresa sorpresa ....
 
uso i componenti standard (queli che sono nel pannello SqlDB)
quindi un OracleConnection (equivalente a SQLConnection), un SQLDataSet 
un Datasource, ed un DbGrid (ho replicato quello che normalmente si fa 
in delphi), imposto la stringa di connessione, provo un test;
subito solleva eccezione ... manca oci.dll;
 
sono in WIn7/64 con Lazarus64 bit; scarico le dll per 64bit, le metto su 
una directory test, aggiungo un path di ricerca, e si connette ed esegue 
query.
 
la cosa mi lascia un po' cosi'; possibile che delphi (consolidato da 
anni) con i driver dbx abbia rogne, ed un open no ?
 
francamente mi sarei aspettato il contrario.

 proprio non lo considero neppure.
 
Alla prima difficolta, legata poi semplicemente ad un file che non trovi, si pensa SUBITO a cambiare tecnologia?? :-|
 
A.
 

delphi 7 è del 2002.
Questo non giustifica ovviamente il fatto che il driver dbx per oracle faccia casini, ma non credo tu stia usando un lazarus del 2002...
 
A parte cio, a me succede questo:
 
ho piu schemi sulla mia istanza oracle.
al momento ne ho 7.
 
Se uso una  TSQLStoredProc per una stored procedure con 4 parametri, mi vedo 4*7=28 parametri, ovvero gli stessi 4 parametri ripetuti 7 volte...
 
Era solo un test: qua si usa ado.
e cmq ado qualche stranezza ogni tanto pure la fa.
 
 
A.

 anni) con i driver dbx abbia rogne, ed un open no ?
 
Si per due motivi:
 
 1) Open source non e` sinonimo di scarsa qualita`. Cosi` come "Progetto 
commerciale" e` sinonimo di software scritto a regola d'arte. Nello 
specifico, nonostante siano comunque dei progetti (relativamente) di 
nicchia, FreePascal e Lazarus sono parecchio maturi, stabili e, soprattutto, 
usabili in contesti lavorativi seri. Detto questo, come ho gia` accennato 
anche nell'altro thread, un comportamento come il tuo lo vedo solo dannoso e 
deprecabile, in quanto si preferisce rimanere in un'ottusita` rispetto al 
resto del mondo piuttosto che capire e valutare alternative e modi di 
pensare differenti dal proprio. A prescindere dalle proprie ragioni, ricordo 
che un comportamento del genere e` sempre stato dannoso e fatale per lo 
sviluppo di qualsiasi tecnologia, societa`, forma di vita incontrata nella 
storia umana.
 
 2) Nonostante abbiano lo stesso scopo, Delphi e Lazarus sono due prodotti 
completamente differenti. Questo significa che deventuali caratteristiche 
comuni sono sviluppate in modo differente, avendo di conseguenza eventuali 
bug differenti. Nello specifico, quello che vedo e` che il driver SqlDB di 
Lazarus implementa solo un binding verso la libreria di connessione al 
database specifico (in questo caso, oci.dll), mentre DbExpress implementa 
una libreria di strato che probabilmente si appoggia poi alla libreria di 
connessione al database specifico. Da questo punto di vista, personalmente, 
ritengo piu` saggia la scelta di Lazarus, in quanto meno stratificata e 
quindi meno prona ad eventuali bug.
 
Enrico