11. juni 2003 - 12:35Der er
11 kommentarer og 1 løsning
JDBC - dynamisk anvendelse af JDBC-drivere
Jeg skal i gang med at lave en applikation, hvor jeg gerne vha. JDBC vil connect'e til forskellige databaser af forskellig type, f.eks. MySql, DB2, SAS etc.
Mit spm. i den forbindelse er, om jeg dynamisk kan lade mit program finde driveren, der passer til databasen?
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Jeg ved ikke, om jeg forstår dig. Jeg forestiller mig, at programmet egentlig blot kender URL'en og ikke direkte database-typen - og at programmet selv finder en egnet driver til netop den aktuelle databasetype.
Hvis jeg forstår dig ret, vil du lave en konfigurationsfil, hvor alle URL'er og de dertil knyttede drivere er beskrevet.
Men hvad så hvis brugeren måske dynamisk tilslutter nye eksterne netværksdrev, hvor der er placeret databaser, som umiddelbart er fremmede for applikationen (URL'en kendes ikke på forhånd). I den situation vil jeg gerne have, at applikationen så at sige selv genkender den pågældende database-type (hvis den er kendt) og selv anvender den relevante driver.
Jeg forestiller mig en slags "plug-and-play"-facilitet, hvor applikationen selv forsøger at genkende den pågældende database-type.
Mht. fil-databaser må fremgangsmåden vel være, at man ud fra det fysiske fil-navn vælger driveren; der kan vel ikke være andre muligheder.
For så vidt der er tale om database-servere, er ønsket fortsat automatisk at detektere database-typen og derefter anvende den relevante driver, altså en slags "plug-and-play"-funktionalitet. Jeg tror jeg forestiller mig, at databasen et eller andet sted har en identifikation, som man kan spørge på og derefter udlede, hvilken driver der skal benyttes (?)
Det er vel noget i den retning, der sker, når man f.eks. i Windows tilslutter en ny printer. Her finder Windows selv den nødvendige driver for printeren og etablerer forbindelsen.
Kan man helt simpelt løbe alle drivere igennem og se, hvilken der giver "bid"? Man får vel en exception, hvis driveren ikke duer til den pågældende database?
Ved de fleste fil-databaser tror jeg faktisk at man skal have filnavn for at detecte driver og DSN for at detecte URL. DSN kan normalt ikke udledes af sti til fil.
De fleste database servere skal man typisk have IP navn og port for at kunne connecte til.
Det er lidt sværere at browser sig til.
Men principielt kan du godt forsøge at connecte dig med diverse drivere og du skal nok få en SQLException, hvis driver ikke passer.
Men alle de java baserede database tools jeg kender spørger om driver og URL.
Det lyder jo også helt fornuftigt, kan jeg godt se. Hvis man som bruger forsøger at connecte til en server for at få adgang til data, er man formentlig også godt klar over på forhånd, hvilken type data der er tale om.
Jeg er dog lidt usikker på, hvordan jeg skal bruge JDBC mod en fil-database og altså ikke en database-server. F.eks. i relation til SAS, som jeg ønsker at læse fra, foregår kommunikationen normalt via en SAS/Share-server, men egentlig bør jeg vel på tilsvarende måde direkte kunne læse et SAS-datasæt uden at have en server kørende? Har du nogen mening/erfaring med dette? (jeg kan godt oprette et nyt spm.)
Ok, jeg tænker nu mere generelt: Data kan stilles til rådighed dels gennem en server og dermed JDBC-adgang eller simpelthen via en fil (f.eks. et SAS-datasæt, en DB2-tabel, en Access-fil mv.).
Mit spm. går på, om man også kan bruge JDBC direkte mod en fil, eller JDBC kræver en server at kommunikere med i den anden ende?
MS Access, DBase IV, Paradox etc. er: application--(JDBC)---driver----(disk IO)----fil
MS SQLServer, Oracle, DB2, MySQL etc. er: application--(JDBC)---driver----(net IO)----databass server----(disk IO)----fil
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.