Avatar billede trp79 Nybegynder
19. april 2003 - 17:48 Der er 12 kommentarer og
1 løsning

JDBC-ODBC, Statements, Resultset osv.

Jeg kunne godt tænke mig at vide lidt om hvad der sker når man arbejder med databaser fra java.

...Man opretter en forbindelse mellem java og databasen, fx vha. jdbc-odbc driver. Herefter kan man så eksekvere sql sætninger fra java gennem denne driver?
Men for at man kan lave eksekverer en sql sætning skal man have en statement, men hvad er en statement, hvad er et resultset og hvad der nu ellers findes af finurligheder i forbindelse med tilgang til en database fra java?

Lidt rodet spørgsmål :o( men jeg kunne godt tænke mig at vide hvad der sker og hvad de forskellige ting man kan arbejde med i forbindelse med database tilgang er.
Avatar billede arne_v Ekspert
19. april 2003 - 17:56 #1
Connection = forbindelse til databasen - typisk er der en en
socket forbindelse til databasen involveret

Statement = en SQL sætning normalt indeholder den ikke ret meget

ResultSet = en pege-pind (en cursor hvis du kender det udtryk) til resultatet
af en query
Avatar billede arne_v Ekspert
19. april 2003 - 17:56 #2
En PreparedStatement indeholder i modsætning til en Statement
noget nemlig en allerede parset udgave af SQL strenge som der
kun skal sættes værdier ind i.
Avatar billede arne_v Ekspert
19. april 2003 - 17:59 #3
JDBC-ODBC driveren er speciel derved at det er:
  applikation---JDBC driver---ODBC driver---database
i stedetfor:
  applikation---JDBC driver---database

Den er lavet fordi der er ODBC drivere til utroligt mange databaser.

Efterhånden er der også JDBC drivere til de fleste databaser (stort
set alle undtagen MS Access), så behovet for den er faldet.

[Og den JDBC-ODBC driver det kommer med Java fra SUN er ikke specielt god]
Avatar billede trp79 Nybegynder
19. april 2003 - 18:18 #4
Det var lige det jeg skulle bruge, jeg takker :o)
Avatar billede trp79 Nybegynder
19. april 2003 - 19:01 #5
Hvis en statement er en sql sætning, hvor creater man så først sin statement og efterfølgende eksekverer en sql sætning i den? Er det fordi man i første omgang bare erklære den og efterfølgende bruger den?
fx:

Statement s1= dbConnection.createStatement();
s1.executeUpdate("INSERT INTO Brugertabel (Brugernavn,Password) "+
        "VALUES ('"+brugernavn+"', '"+password+"')");
Avatar billede trp79 Nybegynder
19. april 2003 - 19:06 #6
altså hvorfor er det nødvendig at have .executeUpdate og executeQuery når man det står i selve sql sætningen?
Avatar billede arne_v Ekspert
19. april 2003 - 19:06 #7
Statement er et objekt som bliver created ved conn.createStatement.

Jeg tror bare ikke at det objekt indeholder ret meget.

Fordi SQL sætningen først kommer med stmt.execute*.

I modsætning til PreparedStatement hvor SQL sætningen er argument
til conn.prepareStatement.

Det er derfor jeg er sikker på at det objekt faktisk indeholder
noget af substans.
Avatar billede arne_v Ekspert
19. april 2003 - 19:08 #8
Du mener hvorfor eksisterer det Statement objekt i det hele taget og hvorfor
er det ikke bare conn.execute* ?

De vise fædre der har designet JDBC API må jo have ment at der
kunne være brug for det i nogen situationer.
Avatar billede trp79 Nybegynder
19. april 2003 - 19:13 #9
Jep det var det jeg mente.

Så tror jeg er at jeg er med, tak for det :o)
Avatar billede arne_v Ekspert
19. april 2003 - 19:14 #10
Hvis du er meget nysgerrig kan du jo f.eks. gå til:
  http://www.mysql.com/downloads/api-jdbc-stable.html
og downloade source til MySQL JDBC driver og se hvad
deres Statement.java og PreparedStatement.java laver !
Avatar billede trp79 Nybegynder
19. april 2003 - 19:15 #11
Jeg er på vej... :o)
Avatar billede arne_v Ekspert
19. april 2003 - 19:16 #12
Jeg prøvede og mit indtryk er at begrundelsen for Statement nok har
været at Statement udover execute* også har nogle set og get metoder
til lidt forskelligt - og at vurderingen nok har været at det
ville være noget juks at have dem på Connection (bl.a. kan man
jo have flere Statements med forskellige egenskaber til samme
Connection).
Avatar billede trp79 Nybegynder
19. april 2003 - 19:20 #13
Okey, det vil jeg lige tage med når jeg kigger det igennem....
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester