Προς το περιεχόμενο

JDBC MySQL Connector/J


PhlegethoN

Προτεινόμενες αναρτήσεις

Δημοσ.

>import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import javax.swing.*;

public class Jdbc_mini_example extends JApplet implements ActionListener {

   static String     driverClassName = "com.mysql.jdbc.Driver" ;
   static String     url             = "jdbc:mysql://mysql12.freehostia.com:3306/" ;
   static Connection dbConnection    = null ;
   static Statement  statement       = null ;
   
   private JLabel message;
   private JButton connect;
 
   public void init() {
   	message = new JLabel();
   	JPanel panel = new JPanel();
   	BoxLayout box = new BoxLayout(panel, BoxLayout.PAGE_AXIS);
   	connect = new JButton("Connect");

       this.add(panel);
   	panel.setLayout(box);
   	panel.add(message);
   	panel.add(connect);
   	connect.addActionListener(this);

   	message.setAlignmentX(CENTER_ALIGNMENT);
   	connect.setAlignmentX(CENTER_ALIGNMENT);
   	
   	try {
      		Class.forName (driverClassName) ;
      		message.setText("MySQL JDBC driver loaded ok.");
   	} catch (Exception ex) {
   		message.setText("Exception: " + ex);
  		}
   }

public void actionPerformed(ActionEvent e) {
	try {
		message.setText("Connecting...");
		dbConnection = DriverManager.getConnection (url, "user", "password");
		
		if(!dbConnection.isClosed()) {
			message.setText("Successfully connected to " +
				"MySQL server.");
		}

		statement = dbConnection.createStatement() ;

		statement.executeUpdate ("UPDATE counter " + 
   			"SET value = value + 1" +
                             	"WHERE id = 1") ;

		statement.close ();
		dbConnection.close ();

		
	} catch (SQLException ex) {
   		        message.setText("SQLException: " + ex);
   	        }
}
}	

 

Σε καθε περιπτωση ο παραπανω κωδικας πεταει SQLException: "Could not create connection to database server."

Εχω χιλιοτσεκαρει το url και τα credentials και ειναι σωστα (εγραψα ενα παρομοιο scriptaki σε PHP το ανεβασα στο server και συνδεεται κανονικα).

Τι θα μπορουσε να φταιει?

Δημοσ.

Εδώ κάνει catch exception? Η περνάει κανονικά?

>
try {
               Class.forName (driverClassName) ;
               message.setText("MySQL JDBC driver loaded ok.");
       } catch (Exception ex) {
               message.setText("Exception: " + ex);
               }

Δημοσ.

Το μονο line που πεταει exception σε ολο το block της actionPerformed ειναι το

dbConnection = DriverManager.getConnection (url, "user", "password");

και φαινεται κ απο το message. Ουσιαστικα εκει ειναι ολη η υποθεση. Για καποιο λογο δεν μπορει να επικοινωνησει με το server.

 

Αν ηταν disabled το remote access/login ή κατι παρομοιο ωστε να με blockαρει ο server, δεν θα επρεπε να ειχα το ιδιο προβλημα και απο το PHP scriptaki? Απο το ιδιο σημειο τρεχουν και τα δυο...

Δημοσ.

Ε ναι..

 

Δοκίμασες να δημιουργήσεις ένα νέο χρήστη στην βάση και να βάλεις αυτά τα credentials?

Δημοσ.

Τζιφος.. Για την ακριβεια ειτε του δωσω σωστα credentials ειτε οχι, το exception μενει ιδιο.

Δοκιμασα και διαφορετικο κατασκευαστη για την getConnection που ετυχε να δω σε αλλα παραδειγματα δινοντας τα credentials στο URL:

 

dbConnection = DriverManager.getConnection("jdbc:mysql://mysql12.freehostia.com:3306?user=user&password=password");

 

αλλα δεν φαινεται να αλλαζει κατι...

Δημοσ.

Η εφαρμογή τρέχει εκτός του server της Freehostia; Έχεις λάβει υπ'όψιν σου ότι η πλειοψηφία των βάσεων δεν επιτρέπει την σύνδεση σε αυτές από IP διαφορετική της localhost;

Δημοσ.

Ναι και γι'αυτο το λογο βασικα το μετετρεψα σε applet (αρχικα ηταν application) ωστε να μπορω να το τρεξω στον server, γτ φοβομουν κατι τετοιους περιορισμους. Το applet τρεχει στον ιδιο server με τη βαση και το script. Παντως βαζοντας ως url localhost (url = "jdbc:mysql://localhost:3306/") τωρα που το ανεφερες μου βγαζει διαφορετικο exception:

 

SQLException: Communications link failure. The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

Δημοσ.

είχα ίδιο ακριβώς πρόβλημα....άλλαξε και συνδέσου με windows authentication και χωρίς pass και username..θα συνδεθείς..με ταλαιπώρησε πολλές μέρες την προηγουμενη εβδομάδα..επίσης δημιούργησε από το πινακα ελεγχου---> egraleia διαχείρισης το path σου

Δημοσ.

vicky εισαι σιγουρη οτι μπορω να συνδεθω με windows authentication στη MySql?

Εριξα μια ματια στο thread σου, η βαση σου ειναι σε SQL Server ενω η δικη μου σε MySQL. Ειμαι σχετικα πρωταρης με τις βασεις δεδομενων και δεν κατεχω καλα τις διαφορες, αλλα νομιζω οτι μονο η ΜS SQL Server εχει windows authentication και δεν θα δουλεψει απλα αλλαζοντας drivers...

Καποιος πιο εμπειρος ας με διαφωτισει, αν ειναι να το δοκιμασω...

 

PS: Κατι τετοιο εννοεις Accessing SQL Server on NetBeans using JDBC?

Δημοσ.

ναι sorry έχεις δίκιο...εμενα είναι σε sqlserver..και με αυτό το link που μου έδειξες είχα πρόβλημα δεν δουλεύει έτσι όπως τα λέει ...όταν είχα δουλέψει με ""μυσωλ"" ένα φεγγάρι...απλά αν έχεις πρόβλημα στο link δημιούργησε το από το πινακα ελεγχου για να είσαι σίγουρος..φαντάζομαι το πρόβλημα είναι εκεί γιατί αν είχες πρόβλημα στο user πετάει άλλο exception ότι δεν έχεις πρόσβαση με αυτά τα στοιχεια.συνήθως το path είναι "jdbc:mysql://localhost:3306/ onomadatabase

esena gt einai allo? δες και αυτό το βιντεάκι με είχε βοηθήσει όταν έκανα "mysql" εμενα Link

Δημοσ.

Εχω δοκιμασει καθε πιθανη παραλλαγη του link (εκανα νεα βαση και δοκιμασα κατι τετοιο "jdbc:mysql://localhost:3306/testdb") αλλα παλι βλεπω συνεχεια το "Communications link failure".

Πρεπει να ειναι θεμα του freehosting, αν κ δεν εβγαλα ακρη με το support τους... Thx για την βοηθεια anyway :)

Δημοσ.

Ναι και γι'αυτο το λογο βασικα το μετετρεψα σε applet (αρχικα ηταν application) ωστε να μπορω να το τρεξω στον server, γτ φοβομουν κατι τετοιους περιορισμους. Το applet τρεχει στον ιδιο server με τη βαση και το script. Παντως βαζοντας ως url localhost (url = "jdbc:mysql://localhost:3306/") τωρα που το ανεφερες μου βγαζει διαφορετικο exception:

 

Τα java applets είναι client-side applications (τρέχουν δηλαδή "μέσα" στον browser). Με λίγα λόγια είναι σαν να προσπαθείς από το PC σου να συνδεθείς στην database remotely και όχι locally.

 

Το ποιό απλό που μπορείς να κάνεις για να το διαπυστώσεις αυτό είναι να τρέξεις τοπικά μιά βάση MySQL και να δείς αν όντως συνδέεται.

Δημοσ.

Σε αντιστοιχη local βαση που ειχα στησει ειχε δουλεψει κανονικα αλλα τοτε το ετρεχα ως application.

Γενικα το θεμα με το applet δεν αποδειχτηκε καλη ιδεα. Εκτος απο το οτι ο server τελικα επιβεβαιωθηκε οτι δεν δεχεται remote access (μου απαντησε το support σημερα μετα απο 3 μερες) και τα ιδια εχουν πολλους περιορισμους λογω του security sandbox στο οποιο τρεχουν (καποιοι γινονται lift αν τα κανεις sign νομιζω, αλλα τρεχα γυρευε).

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...