RE: JSP με ΜySQL και όχι embeed JDBC

panagiotis takis_rs takispadaz at hotmail.com
Tue Jun 30 09:10:19 BST 2009


Το JDBC API
H Java παρέχει ένα προγραμματιστικό περιβάλλον (API) για σύνδεση σε βάσεις
δεδομένων, γνωστό ως Java Database Connectivity (JDBC). Το συγκεκριμένο API
μας παρέχει τη δυνατότητα να διαχειριστούμε μια βάση δεδομένων μέσω εντολών
SQL. Για να χρησιμοποιήσουμε το JDBC API απαιτούνται δυο ομάδες βιβλιοθηκών,
τις οποίες πρέπει να φορτώσουμε στο πρόγραμμά μας.
● Η μια μας παρέχει τις απαραίτητες κλάσεις και μεθόδους ώστε να μπορούμε να
συνδεθούμε στη συγκεκριμένη βάση δεδομένων. Η συγκεκριμένη ομάδα
βιβλιοθηκών είναι ξεχωριστή για κάθε βάση δεδομένων (π.χ. Oracle, MySQL,
Access) και παρέχεται από τον εκάστοτε κατασκευαστή της βάσης. Είναι γνωστή
ως JDBC driver.
● Η δεύτερη μας παρέχει τις απαραίτητες κλάσεις και μεθόδους για να κάνουμε
ενέργειες στη βάση δεδομένων, δηλαδή να γράφουμε SQL. Καθώς η SQL είναι
ίδια για όλες τις βάσεις δεδομένων, έτσι και η συγκεκριμένη βιβλιοθήκη είναι
κοινή, ανεξάρτητα της βάσης που θα χρησιμοποιήσουμε. Η βιβλιοθήκη αυτή
περιέχεται ήδη στη Java και είναι το package java.sql.
Αν γράψουμε μια εφαρμογή σε Java, που διαχειρίζεται μια συγκεκριμένη βάση
δεδομένων (π.χ. MySQL), η εφαρμογή αυτή, με λίγες αλλαγές, θα λειτουργεί και σε
άλλη βάση δεδομένων (π.χ. Oracle), αρκεί να αλλάξουμε τον JDBC driver. Για τη
MySQL, ο JDBC driver είναι ένα αρχείο jar το οποίο φορτώνουμε στην εφαρμογή
μας.

Σύνδεση στη βάση δεδομένων MySQL μέσω Java
Για να συνδεθούμε στη βάση δεδομένων MySQL και να γράψουμε εντολές SQL
απαιτούνται οι εξής ενέργειες:

Δήλωση του JDBC driver στο classpath
O JDBC driver για MySQL παρέχεται στη σελίδα της MySQL. Είναι ένα μικρό
αρχείο jar με όνομα mysql-connector-java-5.0.3-bin.jar (τελευταία έκδοση). Το
αρχείο αυτό πρέπει να το δηλώσουμε στο classpath της εφαρμογής μας, ή να το
βάλουμε στους καταλόγους jre_Home/lib/ext και jdk_Home/jre/lib/ext.
Συνίσταται η τελευταία λύση, καθώς έτσι θα το βλέπει οποιαδήποτε εφαρμογή
γράψετε και το χρειάζεται.
Η εισαγωγή ενός package σε πρόγραμμα java γίνεται με την εντολή
import packageName.className ή import packageName.* (για όλες τις κλάσεις).
Στη δική μας περίπτωση θα πρέπει να γράψουμε την εντολή
import java.sql.*;
Φόρτωμα του JDBC driver
Το φόρτωμα του JDBC driver γίνεται φορτώνοντας την κλάση Driver από το
package com.mysql.jdbc. Το φόρτωμα μιας κλάσης γίνεται μέσω της εντολής
Class.forName(“ClassName”);
Στην περίπτωσή μας πρέπει να γράψουμε την εντολή:
Class.forName(“com.mysql.jdbc.Driver”);
Παρατηρήστε ότι γράψαμε ολόκληρο το path της κλάσης Driver, καθώς αυτή
περιέχεται σε package. Θα μπορούσαμε να γράψουμε μόνο το όνομα της κλάσης,
αλλά να είχαμε πριν συμπεριλάβει το αντίστοιχο package στο πρόγραμμά μας, μέσω
της εντολής
import com.mysql.jdbc

Σύνδεση στη βάση δεδομένων
Η σύνδεση στη βάση δεδομένων γίνεται δημιουργώντας ένα αντικείμενο τύπου
Connection. Μέσω του αντικειμένου αυτού θα μπορούμε να γράφουμε εντολές SQL.
Η δημιουργία ενός αντικειμένου τύπου Connection (π.χ. myConnection) γίνεται με
την παρακάτω εντολή:
Connection myConnection = DriverManager.getConnection(myDatabase);
MyDatabase είναι μια συμβολοσειρά (string) τη μορφής:
“jdbc:mysql://ServerName:ServerPort/DatabaseName?user=myUsername&password=myPassword";
ServerName είναι το όνομα ή η διεύθυνση ΙΡ του database server.
ServerPort είναι η θύρα επικοινωνίας του database server MySQL (default=3306).
DatabaseName είναι το όνομα της βάσης δεδομένων που θα χρησιμοποιήσουμε.
myUsername και myPassword είναι το username και το password που
χρησιμοποιούμε για να συνδεθούμε στη mySQL.
Αν χρησιμοποιούσαμε μια βάση δεδομένων με όνομα test, ο MySQL server έτρεχε
τοπικά στο σύστημά μας και συνδεόμασταν με username: teiath και password aigaleo,
τότε οι εντολές για σύνδεση θα είχαν ως εξής:
String testDatabase = “jdbc:mysql://localhost:3306/test?user=teiath&password=aigaleo";
Connection myConnection = DriverManager.getConnection(testDatabase);
ΠΡΟΣΟΧΗ: Μη συγχέετε το username και το password με τα οποία συνδεόμαστε
στη βάση δεδομένων με το username και password που πιθανόν να απαιτείται να
δώσει ο χρήστης για να χρησιμοποιήσει την εφαρμογή που φτιάχνουμε. Τα πρώτα
χρησιμοποιούνται από το ίδιο το πρόγραμμα, και μόνο από αυτό, για να συνδεθεί το
πρόγραμμα στη βάση δεδομένων. Τα δεύτερα χρησιμοποιούνται από το χρήστη, για
τη δική μας εφαρμογή, και τα ορίζουμε εμείς, ή βάζουμε το χρήστη να τα ορίσει.

Δημιουργία αντικειμένου για να γράψουμε SQL statements
Έχοντας το αντικείμενο myConnection, το οποίο στην ουσία είναι μια ανοιχτή
σύνδεση με τη βάση δεδομένων, μπορούμε να δημιουργήσουμε αντικείμενο τύπου
Statement (και όνομα, π.χ. myStatement) μέσω του οποίου θα γράφουμε εντολές
SQL. Αυτό γίνεται με την εντολή:
Statement myStatement = myconnection.createStatement();

Εγγραφή και εκτέλεση SQL statements
Στη συνέχεια γράφουμε την εντολή SQL που θέλουμε να εκτελεστεί. Η συγκεκριμένη
εντολή γράφεται σε μορφή string, όπως ακριβώς θα τη γράφαμε αν την εκτελούσαμε
από το περιβάλλον της mySQL. Για παράδειγμα:
String sqlString = "INSERT INTO USERS VALUES ('user1', 'password1')";
Για να εκτελέσουμε την εντολή που γράψαμε παραπάνω χρησιμοποιούμε το
αντικείμενο myStatement που δημιουργήσαμε, το οποίο μας παρέχει διάφορες
μεθόδους, ανάλογα με το τι κάνει η εντολή SQL που δίνουμε. H σύνταξη της εντολής
που γράφουμε για να εκτελέσουμε την SQL statement είναι:
myStatement.methodName(sqlString);
Για την εντολή insert που γράψαμε παραπάνω, η μέθοδος θα είχε ως εξής:
myStatement.executeUpdate(sqlString);
Αν η sqlString αφορούσε μια SQL statement τύπου select, η μέθοδος θα ήταν:
myStatement.executeQuery(sqlString);
Τις διάφορες μεθόδους των αντικειμένων τύπου Connection για να εκτελούμε SQL
statements θα τις δούμε αναλυτικά σε επόμενα κεφάλαια.

Κλείσιμο του αντικειμένου εγγραφής SQL statements
Αφού έχουμε τελειώσει με την εκτέλεση των SQL statements πρέπει να κλείσουμε το
αντικείμενο εγγραφής SQL statements. Αυτό γίνεται απλά με την εντολή
myStatement.close();

Κλείσιμο της σύνδεσης
Τέλος, για να κλείσουμε τη σύνδεση με τη βάση δεδομένων, γράφουμε την εντολή
myConnection.close();

Παράδειγμα embedded SQL
import java.sql.*; //Import the sql package
class EmbSQL
{
public EmbSQL(){} //constructor
public static void main(String[] args)throws ClassNotFoundException, SQLException{
//parameters to be inserted to the database
String thePart="tequila";
String theUnits="3";
String theUnitCost="15";
Class.forName("com.mysql.jdbc.Driver"); //load the driver
System.out.println("Loaded the driver.");
//prepare the connection string
String myDatabase = "jdbc:mysql://localhost:3306"+
"/test?user=root&password=";
//connect to database
Connection myConnection = DriverManager.getConnection(myDatabase);
System.out.println("Connected to database.");
//create the statement object
Statement myStatement = myConnection.createStatement();
//prepare the sql statement
String sqlString = "INSERT INTO bar VALUES ('"+ thePart +
"', '"+ theUnits +"', '"+ theUnitCost +"')";
myStatement.executeUpdate(sqlString); //execute the statement
System.out.println("Executed an insert statement.");
//prepare another insert statement
sqlString = "INSERT INTO bar VALUES ('tsikoudia','4', '7')";
myStatement.executeUpdate(sqlString); //execute the statement
System.out.println("Executed another insert statement.");
//close the statement and connection objects
myStatement.close();
myConnection.close();
System.out.println("Closed the connection to database.");
}}


2009/6/27 Babis M. <lombnfts at gmail.com>

    Καλησπέρα.

    

    Προσπαθώ εδώ και μία εβδομάδα να κάνω intergration σε MySQL & JSP με apache tomcat αλλά δεν βγάζω τίποτα άλλο πέρα από μερικά errors...

    Έχω κατεβάσει την MySQL Connector Java-5.1.7.

    Άν έχει κάποιος σας κανένα καλό εναλλακτικό guide πέρα απο το επίσημο παρακαλώ ας δώσει ένα χεράκι...

    

    Many thanks! 

    





 



    

    


    






_________________________________________________________________
More than messages–check out the rest of the Windows Live™.
http://www.microsoft.com/windows/windowslive/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.ubuntu.com/archives/ubuntu-gr/attachments/20090630/2e7dd44e/attachment-0001.htm 


More information about the Ubuntu-gr mailing list