<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
<font style="font-size: 12pt;" size="3"><u><b>Το JDBC API</b></u></font><br>H Java παρέχει ένα προγραμματιστικό περιβάλλον (API) για σύνδεση σε βάσεις<br>δεδομένων, γνωστό ως Java Database Connectivity (JDBC). Το συγκεκριμένο API<br>μας παρέχει τη δυνατότητα να διαχειριστούμε μια βάση δεδομένων μέσω εντολών<br>SQL. Για να χρησιμοποιήσουμε το JDBC API απαιτούνται δυο ομάδες βιβλιοθηκών,<br>τις οποίες πρέπει να φορτώσουμε στο πρόγραμμά μας.<br>● Η μια μας παρέχει τις απαραίτητες κλάσεις και μεθόδους ώστε να μπορούμε να<br>συνδεθούμε στη συγκεκριμένη βάση δεδομένων. Η συγκεκριμένη ομάδα<br>βιβλιοθηκών είναι ξεχωριστή για κάθε βάση δεδομένων (π.χ. Oracle, MySQL,<br>Access) και παρέχεται από τον εκάστοτε κατασκευαστή της βάσης. Είναι γνωστή<br>ως JDBC driver.<br>● Η δεύτερη μας παρέχει τις απαραίτητες κλάσεις και μεθόδους για να κάνουμε<br>ενέργειες στη βάση δεδομένων, δηλαδή να γράφουμε SQL. Καθώς η SQL είναι<br>ίδια για όλες τις βάσεις δεδομένων, έτσι και η συγκεκριμένη βιβλιοθήκη είναι<br>κοινή, ανεξάρτητα της βάσης που θα χρησιμοποιήσουμε. Η βιβλιοθήκη αυτή<br>περιέχεται ήδη στη Java και είναι το package java.sql.<br>Αν γράψουμε μια εφαρμογή σε Java, που διαχειρίζεται μια συγκεκριμένη βάση<br>δεδομένων (π.χ. MySQL), η εφαρμογή αυτή, με λίγες αλλαγές, θα λειτουργεί και σε<br>άλλη βάση δεδομένων (π.χ. Oracle), αρκεί να αλλάξουμε τον JDBC driver. Για τη<br>MySQL, ο JDBC driver είναι ένα αρχείο jar το οποίο φορτώνουμε στην εφαρμογή<br>μας.<br><br><u><b>Σύνδεση στη βάση δεδομένων MySQL μέσω Java</b></u><br>Για να συνδεθούμε στη βάση δεδομένων MySQL και να γράψουμε εντολές SQL<br>απαιτούνται οι εξής ενέργειες:<br><br><u><i>Δήλωση του JDBC driver στο classpath</i></u><br>O JDBC driver για MySQL παρέχεται στη σελίδα της MySQL. Είναι ένα μικρό<br>αρχείο jar με όνομα mysql-connector-java-5.0.3-bin.jar (τελευταία έκδοση). Το<br>αρχείο αυτό πρέπει να το δηλώσουμε στο classpath της εφαρμογής μας, ή να το<br>βάλουμε στους καταλόγους jre_Home/lib/ext και jdk_Home/jre/lib/ext.<br>Συνίσταται η τελευταία λύση, καθώς έτσι θα το βλέπει οποιαδήποτε εφαρμογή<br>γράψετε και το χρειάζεται.<br>Η εισαγωγή ενός package σε πρόγραμμα java γίνεται με την εντολή<br>import packageName.className ή import packageName.* (για όλες τις κλάσεις).<br>Στη δική μας περίπτωση θα πρέπει να γράψουμε την εντολή<br>import java.sql.*;<br>Φόρτωμα του JDBC driver<br>Το φόρτωμα του JDBC driver γίνεται φορτώνοντας την κλάση Driver από το<br>package com.mysql.jdbc. Το φόρτωμα μιας κλάσης γίνεται μέσω της εντολής<br>Class.forName(“ClassName”);<br>Στην περίπτωσή μας πρέπει να γράψουμε την εντολή:<br>Class.forName(“com.mysql.jdbc.Driver”);<br>Παρατηρήστε ότι γράψαμε ολόκληρο το path της κλάσης Driver, καθώς αυτή<br>περιέχεται σε package. Θα μπορούσαμε να γράψουμε μόνο το όνομα της κλάσης,<br>αλλά να είχαμε πριν συμπεριλάβει το αντίστοιχο package στο πρόγραμμά μας, μέσω<br>της εντολής<br>import com.mysql.jdbc<br><br><u><i>Σύνδεση στη βάση δεδομένων</i></u><br>Η σύνδεση στη βάση δεδομένων γίνεται δημιουργώντας ένα αντικείμενο τύπου<br>Connection. Μέσω του αντικειμένου αυτού θα μπορούμε να γράφουμε εντολές SQL.<br>Η δημιουργία ενός αντικειμένου τύπου Connection (π.χ. myConnection) γίνεται με<br>την παρακάτω εντολή:<br>Connection myConnection = DriverManager.getConnection(myDatabase);<br>MyDatabase είναι μια συμβολοσειρά (string) τη μορφής:<br>“jdbc:mysql://ServerName:ServerPort/DatabaseName?user=myUsername&password=myPassword";<br>ServerName είναι το όνομα ή η διεύθυνση ΙΡ του database server.<br>ServerPort είναι η θύρα επικοινωνίας του database server MySQL (default=3306).<br>DatabaseName είναι το όνομα της βάσης δεδομένων που θα χρησιμοποιήσουμε.<br>myUsername και myPassword είναι το username και το password που<br>χρησιμοποιούμε για να συνδεθούμε στη mySQL.<br>Αν χρησιμοποιούσαμε μια βάση δεδομένων με όνομα test, ο MySQL server έτρεχε<br>τοπικά στο σύστημά μας και συνδεόμασταν με username: teiath και password aigaleo,<br>τότε οι εντολές για σύνδεση θα είχαν ως εξής:<br>String testDatabase = “jdbc:mysql://localhost:3306/test?user=teiath&password=aigaleo";<br>Connection myConnection = DriverManager.getConnection(testDatabase);<br>ΠΡΟΣΟΧΗ: Μη συγχέετε το username και το password με τα οποία συνδεόμαστε<br>στη βάση δεδομένων με το username και password που πιθανόν να απαιτείται να<br>δώσει ο χρήστης για να χρησιμοποιήσει την εφαρμογή που φτιάχνουμε. Τα πρώτα<br>χρησιμοποιούνται από το ίδιο το πρόγραμμα, και μόνο από αυτό, για να συνδεθεί το<br>πρόγραμμα στη βάση δεδομένων. Τα δεύτερα χρησιμοποιούνται από το χρήστη, για<br>τη δική μας εφαρμογή, και τα ορίζουμε εμείς, ή βάζουμε το χρήστη να τα ορίσει.<br><br><i>Δημιουργία αντικειμένου για να γράψουμε SQL statements</i><br>Έχοντας το αντικείμενο myConnection, το οποίο στην ουσία είναι μια ανοιχτή<br>σύνδεση με τη βάση δεδομένων, μπορούμε να δημιουργήσουμε αντικείμενο τύπου<br>Statement (και όνομα, π.χ. myStatement) μέσω του οποίου θα γράφουμε εντολές<br>SQL. Αυτό γίνεται με την εντολή:<br>Statement myStatement = myconnection.createStatement();<br><br><i>Εγγραφή και εκτέλεση SQL statements</i><br>Στη συνέχεια γράφουμε την εντολή SQL που θέλουμε να εκτελεστεί. Η συγκεκριμένη<br>εντολή γράφεται σε μορφή string, όπως ακριβώς θα τη γράφαμε αν την εκτελούσαμε<br>από το περιβάλλον της mySQL. Για παράδειγμα:<br>String sqlString = "INSERT INTO USERS VALUES ('user1', 'password1')";<br>Για να εκτελέσουμε την εντολή που γράψαμε παραπάνω χρησιμοποιούμε το<br>αντικείμενο myStatement που δημιουργήσαμε, το οποίο μας παρέχει διάφορες<br>μεθόδους, ανάλογα με το τι κάνει η εντολή SQL που δίνουμε. H σύνταξη της εντολής<br>που γράφουμε για να εκτελέσουμε την SQL statement είναι:<br>myStatement.methodName(sqlString);<br>Για την εντολή insert που γράψαμε παραπάνω, η μέθοδος θα είχε ως εξής:<br>myStatement.executeUpdate(sqlString);<br>Αν η sqlString αφορούσε μια SQL statement τύπου select, η μέθοδος θα ήταν:<br>myStatement.executeQuery(sqlString);<br>Τις διάφορες μεθόδους των αντικειμένων τύπου Connection για να εκτελούμε SQL<br>statements θα τις δούμε αναλυτικά σε επόμενα κεφάλαια.<br><br><i>Κλείσιμο του αντικειμένου εγγραφής SQL statements</i><br>Αφού έχουμε τελειώσει με την εκτέλεση των SQL statements πρέπει να κλείσουμε το<br>αντικείμενο εγγραφής SQL statements. Αυτό γίνεται απλά με την εντολή<br>myStatement.close();<br><br><i>Κλείσιμο της σύνδεσης</i><br>Τέλος, για να κλείσουμε τη σύνδεση με τη βάση δεδομένων, γράφουμε την εντολή<br>myConnection.close();<br><font style="font-size: 12pt;" size="3"><u><b><br>Παράδειγμα embedded SQL</b></u></font><br>import java.sql.*; //Import the sql package<br>class EmbSQL<br>{<br>public EmbSQL(){} //constructor<br>public static void main(String[] args)throws ClassNotFoundException, SQLException{<br>//parameters to be inserted to the database<br>String thePart="tequila";<br>String theUnits="3";<br>String theUnitCost="15";<br>Class.forName("com.mysql.jdbc.Driver"); //load the driver<br>System.out.println("Loaded the driver.");<br>//prepare the connection string<br>String myDatabase = "jdbc:mysql://localhost:3306"+<br>"/test?user=root&password=";<br>//connect to database<br>Connection myConnection = DriverManager.getConnection(myDatabase);<br>System.out.println("Connected to database.");<br>//create the statement object<br>Statement myStatement = myConnection.createStatement();<br>//prepare the sql statement<br>String sqlString = "INSERT INTO bar VALUES ('"+ thePart +<br>"', '"+ theUnits +"', '"+ theUnitCost +"')";<br>myStatement.executeUpdate(sqlString); //execute the statement<br>System.out.println("Executed an insert statement.");<br>//prepare another insert statement<br>sqlString = "INSERT INTO bar VALUES ('tsikoudia','4', '7')";<br>myStatement.executeUpdate(sqlString); //execute the statement<br>System.out.println("Executed another insert statement.");<br>//close the statement and connection objects<br>myStatement.close();<br>myConnection.close();<br>System.out.println("Closed the connection to database.");<br>}}<br><br>
2009/6/27 Babis M. <<a href="mailto:lombnfts@gmail.com">lombnfts@gmail.com</a>>
<blockquote>
Καλησπέρα.<br>
<br>
Προσπαθώ εδώ και μία εβδομάδα να κάνω intergration σε MySQL & JSP με apache tomcat αλλά δεν βγάζω τίποτα άλλο πέρα από μερικά errors...<br>
Έχω κατεβάσει την MySQL Connector Java-5.1.7.<br>
Άν έχει κάποιος σας κανένα καλό εναλλακτικό guide πέρα απο το <a href="http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html">επίσημο</a> παρακαλώ ας δώσει ένα χεράκι...<br>
<br>
Many thanks! <br>
<table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td>
<br>
<br><font color="#808080"></font>
</td>
</tr>
</tbody></table>
<br>
<br></blockquote><blockquote><br>
<br>
</blockquote>
<br>
<br><br /><hr />check out the rest of the Windows Live™.
More than mail–Windows Live™ goes way beyond your inbox.
<a href='http://www.microsoft.com/windows/windowslive/' target='_new'>More than messages</a></body>
</html>