Java Developers Kit innehåller ett paket som kallas Java Database Connectivity API , eller JDBC för korta . Detta ger ett enda gränssnitt för att interagera med någon databas paket som ger en JDBC-drivrutin . De flesta större databaslösningar , inklusive MySQL , ger en JDBC -drivrutinen, antingen på deras installations -skivor eller fritt nedladdningsbara från deras hemsida . MySQL JDBC Driver
JDBC drivrutinen för MySQL heter MySQL :: Connector /J , och det är en mycket grundlig implementering av JDBC API . Föraren kommer att vara en JAR-fil som måste vara lokaliserad på Java classpath . Den vanligaste Java IDE , särskilt Eclipse och NetBeans , kommer att göra detta för dig , förutsatt att du referera föraren filen som ett bibliotek . Dessutom , för att kunna använda kommandon från JDBC API , måste du sätta in följande kommando på toppen av varje klass som direkt kommer att använda JDBC
import java.sql *; . .
Setup
Medan JDBC försök att göra med dina databaser i dina Java-program så enkelt som möjligt , det finns ett antal steg att följa för att ställa in databasen anslutningen . Eftersom det är möjligt att skriva ett program som omfattar flera databas drivrutiner innan du ansluter till en databas måste du informera API om vilken drivrutin du ska använda . För detta , kör du följande : .
Class.forName ( " com.mysql.jdbc.Driver " ) newInstance ( ) ;
Detta kommer att returnera en instans av drivrutinen klassen ( som ingår i java.sql ) , och du kan lagra en hänvisning till den instansen för senare användning om du vill . Men det är inte nödvändigt i de flesta fall . Om du får ett felmeddelande , detta troligen innebär att din klass sökvägen inte är korrekt konfigurerad .
Skapa en anslutning
Databasen anslutningen måste göras med hjälp av en URL eller en IP-adress . Om databasen körs på samma maskin som Java-program , är det lätt : Webbadressen är localhost , med ett betydande tillskott : protokollet ( eller URL ) identifierare . En välbekant för webben är " http://" . För en MySQL JDBC -databas , är det rätt protokoll identifierare " jdbc : mysql ://"
Anslutning conn = DriverManager.getConnection ( " jdbc : mysql ://localhost " , användarnamn , lösenord ) ; .
hantera fel
Eventuella fel om en anslutning , ett uttalande eller ett resultat som kommer att vara av SQLException typ . För mer information om det specifika felet , bör du fånga SQLException och skriva ut sitt felmeddelande till konsolen . En potentiell källa till förvirring är hastigheten med vilken anslutningar time out . Det finns gott om tid att ansluta , köra några frågor och få resultat , men nästan säkert inte tid att vänta på inmatning efter en anslutning . Om du måste vänta på användarens input , är det oftast en bättre praxis att koppla , hämta indata och anslut sedan igen för att köra frågor .
Frågor och resultat
det finns två viktiga klasser för att interagera med databasen en gång ansluten : Uttalanden och ResultSet
Uttalande s = conn.createStatement ( ) ; s.executeQuery ( " SELECT * FROM anställda " ) , ResultSet rs = s . . getResultSet ( ) ;
Uttalande skickar helt enkelt SQL strängen till databasen , så frågor kommer behöva skrivas i dialekt av SQL för den använda databasen . En viktig egenskap av en ResultSet är att det hämtar data från servern en rad i taget , och endast hämtar data när raden är begärt. Ovanstående kod inte har hämtat några resultat ännu från servern .
Eftersom det är omöjligt på de flesta system för att veta storleken på ett resultat som innan alla resultaten har hämtats , är det bäst att lagra ett sökresultat , åtminstone tillfälligt, på en datastruktur som kan effektivt ändra storlek . Javas LinkedList klass är perfekt för detta
LinkedList resultat = ny LinkedList ( ) , . Medan ( rs.next ( ) ) { results.add ( rs.getString ( "Förnamn " ) ) ; }
Och , är det alltid en god idé att stänga anslutningar uttryckligen hellre än att låta dem timeout :
rs.close ( ) ; s.close ( ) ; conn.close ( ) ;
Addera