Java Database Connectivity (eller JDBC ) API er et sæt af standard klasser designet til at give én enkelt grænseflade for tilslutning til alle større database løsninger . Understøttede databaser til JDBC omfatter MySQL , Oracle, PostgreSQL , DB2 og Microsoft SQL Server . Denne artikel vil bruge open source database-software , MySQL, at illustrere JDBC principper. Download og Link til MySQL JDBC driver
JDBC kræver en driver for hver type database det vil forbinde til , og produktionen og vedligeholdelsen af denne driver er ansvarlig for udviklerne af databasesoftware. I tilfælde af MySQL er den officielle JDBC driver kaldes MySQL :: Connector /J , og kan fås frit fra MySQL webside. Chaufføren vil være en JAR -fil og denne fil skal være i Java classpath . De fleste Java IDE s vil håndtere dette automatisk for dig, hvis du tilføje driveren filen som en ekstern bibliotek .
Alle kommandoer , der er nødvendige for at interagere med JDBC bør være tilgængelig ved at importere java.sql . * Øverst på din klasse fil.
Registrer driver
Dette kræver ikke at sende en tilmeldingsblanket til Solen. Dette er for at fortælle Java, som database driver, du skal bruge med JDBC for følgende forespørgsler. Du registrerer føreren med følgende kommando : Hej
driver d = ( driver) Class.forName ( " com.mysql.jdbc.Driver " ) newInstance ();
indhold . førerens navn ( com.mysql.jdbc.Driver ) gælder kun for MySQL. Den præcise string bruges til andre database drivere (såsom PostgresSQL ) vil være anderledes.
P Hvis du modtager en java.lang.ClassNotFoundException , dette sandsynligvis, at din driver ikke den klasse sti.
fotos etablere forbindelse
Connections er etableret med følgende kommando : Hej
Connection conn = DriverManager.getConnection ( url , brugernavn, password) ; < br >
Hvis databasen er på den samme maskine som Java -klient adgang til den , derefter " localhost " vil fungere som en adresse i de fleste tilfælde. Hvis portnummeret for databasen ikke er standard for denne database pakke , så det kan vedlægges webadresse ved hjælp af et kolon .
En vigtig tilføjelse er URL id. Dette vil ændre sig til forskellige databaseservere. Men for MySQL ville følgende være gyldigt: String url = " jdbc : mysql ://localhost: 8080 "
Hvis en forbindelse ikke en eller anden grund vil en SQLException blive kastet , og den vil indeholde en fejlmeddelelse med mere information , som du kan udskrive til System.err til fejlsøgning .
Database Timeout
p Det er vigtigt at huske , at som at skabe den forbindelse en aktiv forbindelse mellem klient og server. Men mange databaser har meget stramme tids- out krav. Det er vigtigt, at en forbindelse ikke etableres , før forespørgsler er klar. Snarere end oprette en forbindelse og derefter vente på bruger input at vide, hvad forespørgsler for at køre , er det bedre at oprette en test -forbindelse, slukke og tænde , når forespørgsler er tilgængelige.
Run Query og hente resultater
at udstede en forespørgsel , skal du oprette en erklæring ved hjælp af en aktiv forbindelse til databasen
Statement s = conn.createStatement (); . s.executeQuery ( "SELECT * FROM " + tabelnavn )
For at opnå de resultater, kan du straks køre : Hej
ResultSet rs = s.getResultSet ();
ResultSets
< br >
en vigtig ting at vide om ResultSets er, at de trækker data fra serveren én række ad gangen. Ovenstående kommando kun initialiserer et ResultSet objekt og får nogle metadata om objektet (vigtigst kolonnenavne og typer ) . Det behøver faktisk ikke hente nogen data. Data skal trækkes ud af et ResultSet og opbevares i en anden placering, før forbindelsen er lukket, almindeligvis med en løkke søger noget lignende:
LinketListe data = new LinkedList () , mens ( rs.next () ) { data.add ( rs.getString (1) ) //Hent alle data fra den første kolonne }
tætte forbindelser
meste af tiden, chauffør vil håndtere lukning forbindelser selv. Men det kan hjælpe med at forhindre problemer senere , hvis du altid eksplicit lukke din ResultSet , Statement og tilslutninger , når du er færdig med dem
rs.close (); . S.close (); conn.close (); KAYAK