PhlegethoN Δημοσ. 19 Απριλίου 2011 Δημοσ. 19 Απριλίου 2011 >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 και συνδεεται κανονικα). Τι θα μπορουσε να φταιει?
Tmark Δημοσ. 19 Απριλίου 2011 Δημοσ. 19 Απριλίου 2011 Εδώ κάνει catch exception? Η περνάει κανονικά? > try { Class.forName (driverClassName) ; message.setText("MySQL JDBC driver loaded ok."); } catch (Exception ex) { message.setText("Exception: " + ex); }
PhlegethoN Δημοσ. 19 Απριλίου 2011 Μέλος Δημοσ. 19 Απριλίου 2011 Οχι ο driver φορτωνεται κανονικα. Στο επομενο catch μου χτυπαει, στο connection...
Tmark Δημοσ. 19 Απριλίου 2011 Δημοσ. 19 Απριλίου 2011 Break point έβαλες να δεις σε ποια γραμμή ακριβώς σκάει?
PhlegethoN Δημοσ. 19 Απριλίου 2011 Μέλος Δημοσ. 19 Απριλίου 2011 Το μονο line που πεταει exception σε ολο το block της actionPerformed ειναι το dbConnection = DriverManager.getConnection (url, "user", "password"); και φαινεται κ απο το message. Ουσιαστικα εκει ειναι ολη η υποθεση. Για καποιο λογο δεν μπορει να επικοινωνησει με το server. Αν ηταν disabled το remote access/login ή κατι παρομοιο ωστε να με blockαρει ο server, δεν θα επρεπε να ειχα το ιδιο προβλημα και απο το PHP scriptaki? Απο το ιδιο σημειο τρεχουν και τα δυο...
Tmark Δημοσ. 19 Απριλίου 2011 Δημοσ. 19 Απριλίου 2011 Ε ναι.. Δοκίμασες να δημιουργήσεις ένα νέο χρήστη στην βάση και να βάλεις αυτά τα credentials?
PhlegethoN Δημοσ. 19 Απριλίου 2011 Μέλος Δημοσ. 19 Απριλίου 2011 Τζιφος.. Για την ακριβεια ειτε του δωσω σωστα credentials ειτε οχι, το exception μενει ιδιο. Δοκιμασα και διαφορετικο κατασκευαστη για την getConnection που ετυχε να δω σε αλλα παραδειγματα δινοντας τα credentials στο URL: dbConnection = DriverManager.getConnection("jdbc:mysql://mysql12.freehostia.com:3306?user=user&password=password"); αλλα δεν φαινεται να αλλαζει κατι...
macabre_sunsets Δημοσ. 19 Απριλίου 2011 Δημοσ. 19 Απριλίου 2011 Η εφαρμογή τρέχει εκτός του server της Freehostia; Έχεις λάβει υπ'όψιν σου ότι η πλειοψηφία των βάσεων δεν επιτρέπει την σύνδεση σε αυτές από IP διαφορετική της localhost;
PhlegethoN Δημοσ. 19 Απριλίου 2011 Μέλος Δημοσ. 19 Απριλίου 2011 Ναι και γι'αυτο το λογο βασικα το μετετρεψα σε 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.
vicky5 Δημοσ. 19 Απριλίου 2011 Δημοσ. 19 Απριλίου 2011 είχα ίδιο ακριβώς πρόβλημα....άλλαξε και συνδέσου με windows authentication και χωρίς pass και username..θα συνδεθείς..με ταλαιπώρησε πολλές μέρες την προηγουμενη εβδομάδα..επίσης δημιούργησε από το πινακα ελεγχου---> egraleia διαχείρισης το path σου
PhlegethoN Δημοσ. 19 Απριλίου 2011 Μέλος Δημοσ. 19 Απριλίου 2011 vicky εισαι σιγουρη οτι μπορω να συνδεθω με windows authentication στη MySql? Εριξα μια ματια στο thread σου, η βαση σου ειναι σε SQL Server ενω η δικη μου σε MySQL. Ειμαι σχετικα πρωταρης με τις βασεις δεδομενων και δεν κατεχω καλα τις διαφορες, αλλα νομιζω οτι μονο η ΜS SQL Server εχει windows authentication και δεν θα δουλεψει απλα αλλαζοντας drivers... Καποιος πιο εμπειρος ας με διαφωτισει, αν ειναι να το δοκιμασω... PS: Κατι τετοιο εννοεις Accessing SQL Server on NetBeans using JDBC?
vicky5 Δημοσ. 20 Απριλίου 2011 Δημοσ. 20 Απριλίου 2011 ναι sorry έχεις δίκιο...εμενα είναι σε sqlserver..και με αυτό το link που μου έδειξες είχα πρόβλημα δεν δουλεύει έτσι όπως τα λέει ...όταν είχα δουλέψει με ""μυσωλ"" ένα φεγγάρι...απλά αν έχεις πρόβλημα στο link δημιούργησε το από το πινακα ελεγχου για να είσαι σίγουρος..φαντάζομαι το πρόβλημα είναι εκεί γιατί αν είχες πρόβλημα στο user πετάει άλλο exception ότι δεν έχεις πρόσβαση με αυτά τα στοιχεια.συνήθως το path είναι "jdbc:mysql://localhost:3306/ onomadatabase esena gt einai allo? δες και αυτό το βιντεάκι με είχε βοηθήσει όταν έκανα "mysql" εμενα Link
PhlegethoN Δημοσ. 21 Απριλίου 2011 Μέλος Δημοσ. 21 Απριλίου 2011 Εχω δοκιμασει καθε πιθανη παραλλαγη του link (εκανα νεα βαση και δοκιμασα κατι τετοιο "jdbc:mysql://localhost:3306/testdb") αλλα παλι βλεπω συνεχεια το "Communications link failure". Πρεπει να ειναι θεμα του freehosting, αν κ δεν εβγαλα ακρη με το support τους... Thx για την βοηθεια anyway
Επισκέπτης Δημοσ. 22 Απριλίου 2011 Δημοσ. 22 Απριλίου 2011 Ναι και γι'αυτο το λογο βασικα το μετετρεψα σε 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 και να δείς αν όντως συνδέεται.
PhlegethoN Δημοσ. 22 Απριλίου 2011 Μέλος Δημοσ. 22 Απριλίου 2011 Σε αντιστοιχη local βαση που ειχα στησει ειχε δουλεψει κανονικα αλλα τοτε το ετρεχα ως application. Γενικα το θεμα με το applet δεν αποδειχτηκε καλη ιδεα. Εκτος απο το οτι ο server τελικα επιβεβαιωθηκε οτι δεν δεχεται remote access (μου απαντησε το support σημερα μετα απο 3 μερες) και τα ιδια εχουν πολλους περιορισμους λογω του security sandbox στο οποιο τρεχουν (καποιοι γινονται lift αν τα κανεις sign νομιζω, αλλα τρεχα γυρευε).
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.