Εμφάνιση 1-9 από 9
  1. #1
    Εγγραφή
    27-11-2008
    Μηνύματα
    59
    Downloads
    1
    Uploads
    0
    ISP
    Tellas
    Router
    SpeedStream 4200
    SNR / Attn
    9(dB) / (dB)
    Παιδια καλημερα εφτιαξα μια εργασια σε JAVΑ με Netbeans 6.8 και το συνδεσα με μια βαση δεδομενων. Οσο την ετρεχα στο pc μου ολα ωραια ολα καλα. Πηρα το αρχειακι .jar (Unipi..jar) που φτιαχνει το Netbeans εκανα κ export την βαση δεδομενων (unipi.sql, την ειχα φτιαξει σε mysql) και πηρα αυτα τα δυα αρχεια κ τα πηγα στα εργαστηρια της σχολης μου αλλα δεν ετρεχαν! Θεωρησα οτι μπορει να φταιει το pc για διαφορους κ πολλους λογους! Μετα δοκαμασα να τα τρεξω σε ενα Laptop ενος φιλου κ ολα ετρεχαν μια χαρα αλλα δεν επικοινωνουσε η εφαρμογη με την βαση. Μηπως παιζει προβλημα με τον msql connector??. Και γενικα αμα εχεις καποια εφαρμογη σαν αυτη τι πρεπει να κανεις για να μπορει να τρεχει σε οποιοδηποτε μηχανημα χωρις προβλημα..??

  2. #2
    Εγγραφή
    22-10-2004
    Μηνύματα
    2.435
    Downloads
    4
    Uploads
    0
    Ταχύτητα
    102400/10240
    ISP
    Cosmote
    DSLAM
    ΟΤΕ - ΧΟΛΑΡΓΟΣ
    Router
    Speedport Plus
    Όταν λες δεν έτρεχε; έβγαζε κάποιο λάθος; Ή δεν είχε καθόλου java; Ο υπολογιστής που το έβαλες είχε εγκατεστημένη mysql; Έκανες import την βάση;

    Αυτό που λες για να την τρέχει σε οποιοδήποτε μηχάνημα, μία λύση είναι αν η βάση είναι στον ίδιο υπολογιστή να του βάλεις στο connection string localhost:3306. Επειδή όμως ποτέ δεν μπορείς να είσαι σίγουρος, το καλύτερο θα ήταν να φτιάξεις ένα db.properties αρχείο (δεν έχει σημασία το όνομα) και να το βάλεις μέσα στο jar. Από εκεί μπορείς να το φορτώνεις ως εξής:
    (To αρχείο θα το έχεις στο root directory μέσα στο jar)

    Κώδικας:
    Properties props = Properties.load(Class.getResourceAsStream("/db.properties"));
    Οπότε μετά για να χρησιμοποιήσεις το property κάνεις απλά props.getProperty("host") για παράδειγμα.
    Το properties αρχείο θα μπορούσε να έχει μέσα για παράδειγμα:
    Κώδικας:
    host=localhost
    port=3306
    username=scott
    password=tiger
    Οπότε όταν το πας σε ένα καινούργιο pc, αφού σετάρεις την βάση και πριν τρέξεις το jar, το ανοίγεις με ένα zip filemanager, κάνεις edit το αρχείο με τις σωστές τιμές, το ξαναποθηκεύεις και είσαι έτοιμος.

    Σε 2η φάση θα μπορούσες να δίνεις και driver name, καθώς και schema name από τα properties.
    Heh, screw you guys... I'm going home!

  3. #3
    Εγγραφή
    05-07-2009
    Μηνύματα
    43
    Downloads
    0
    Uploads
    0
    Μόνο το δικό σου jar πήρες;
    Το jar με τον driver για να συνδεθείς στη βάση το πήρες;

  4. #4
    Εγγραφή
    27-11-2008
    Μηνύματα
    59
    Downloads
    1
    Uploads
    0
    ISP
    Tellas
    Router
    SpeedStream 4200
    SNR / Attn
    9(dB) / (dB)
    Παράθεση Αρχικό μήνυμα από dvm Εμφάνιση μηνυμάτων

    Κώδικας:
    Properties props = Properties.load(Class.getResourceAsStream("/db.properties"));
    Οπότε μετά για να χρησιμοποιήσεις το property κάνεις απλά props.getProperty("host") για παράδειγμα.
    Το properties αρχείο θα μπορούσε να έχει μέσα για παράδειγμα:
    Κώδικας:
    host=localhost
    port=3306
    username=scott
    password=tiger
    Ναι ειχε εγκατεστημενη msql το pc. Tο αρχειακι jar του msql-connector πηρα αυτο κ ξαναπηγα στο library και το ξαναεθεσα σκεπτομενος οτι μπορει να εχει χαλασει το pathfile. Αλλα μαλλον το λαθος μου ειναι οτι δεν εκανα import την βαση στο pc που δεν ετρεχε. (Οταν λεω δεν ετρεχε εννοω οτι στο cmd εβγαζε errors που αφορουσαν καποια swing).
    Η ιδεα ομως του dvm ειναι πολυ ευχρηστη.
    Δηλαδη μου λες σε καθε κλαση που η java επικοινωνει με την βαση να πηγαινω και να δινω π.χ. αντι
    ''static final String USERNAME = "root";'' κατι σαν
    ''static final String USERNAME = props.getProperty("username");'' αυτο ;
    Οποτε σε οποιο μηχανημα θελησω να το τρεξω θα πρεπει να εχει εγκατεστημενo msqlserver; (ειμαι καινουριος στον προγραμματισμο κ μπορει οι αποριες μου να ειναι αστειες για καποιον που ασχολειται καιρο αλλα για εμενα παραμενουν να ειναι αποριες οποτε ζηταω την ανοχη σας...!)

  5. #5
    Εγγραφή
    03-04-2003
    Μηνύματα
    916
    Downloads
    5
    Uploads
    0
    Τύπος
    ADSL2+ Forthnet Full
    Ταχύτητα
    8192/1024
    ISP
    Forthnet
    DSLAM
    ΟΤΕ - ΜΑΡΟΥΣΙ
    Router
    THOMSON ST585
    Για αρχή:
    1. Κάνε copy paste εδώ ολόκληρο το stacktrace που παίρνεις όταν το τρέχεις από το command line.
    2. Επίσης copy paste την εντολή που τρέχεις για να ξεκινήσεις το πρόγραμμα.
    3. Περιεγραψέ μας αν έχεις κάνει κάποιες προσθήκες libraries στο CLASSPATH enviroment variable.

    Η εφαρμογή σου χρειάζεται να συνδεθεί με μία βάση MySQL server που θα έχει ένα database (schema) με το όνομα που έχεις ορίσει στο connection string. ΠΧ το database name είναι dbname σε αυτό το παράδειγμα:
    Κώδικας:
    jdbc:mysql://host_name:port/dbname
    Θα χρειαστεί να δημιούργησεις το schema της βάσης της εφαρμογής σου στον MySQL server που θα συνδεθεί η εφαρμογή. Αυτό σημαίνει αρχικά create database..., use database ..., και μετά διάφορα create table.... κλπ. Τα οποία λογικά τα δημιουργεί το import script που έχεις δημιουργήσει.

    Ο MySQL server μπορεί να βρίσκεται σε άλλο pc προσβάσιμο μέσω δικτύου. Στο παραπάνω παράδειγμα το pc με την MySQL έχει όνομα host_name. Θα μπορούσε να χρησιμοποιηθεί και η IP.

    To connection string συνήθως αλλάζει σε κάθε environment που θες να εγκαταστήσεις οπότε πρέπει να είναι εύκολο να το αλλάζεις χωρίς να χρειάζεται recompile. Η λύση που προτείνει ο dvm είναι σωστή. Ακόμα καλύτερα θα ήταν το db.properties να είναι έξω από το jar και να περνάς το filepath του αρχείου στο πρόγραμμα μέσω JVM variable στην εντολή εκκίνησης. Έτσι είναι πιο εύκολα προσβάσιμο και δεν χρειάζεται να ανοίγεις το jar, να κάνεις edit το αρχείο και να το ξαναβάζεις.

    Η εντολή εκκίνησης θα μπορούσε να περιλαμβάνει και τα extra libraries που θα πρέπει να γίνουν διαθέσιμα στο classpath, και να μπει σε ένα .bat ή .sh αρχείο.

    Παράδειγμα αρχείου start.bat:

    Κώδικας:
    java -cp myapp.jar;./libs/mysql-connector.jar;./libs/log4j.jar -Dmy-properties-file=./db.properties com.myapp.MyMain
    Δεν είμαι 100% σίγουρος αν το -Dmy-properties-file=./db.properties θα παίξει ή αν χρειάζεται το full-path (πχ C:/mydir/db.properties)

  6. #6
    Εγγραφή
    22-10-2004
    Μηνύματα
    2.435
    Downloads
    4
    Uploads
    0
    Ταχύτητα
    102400/10240
    ISP
    Cosmote
    DSLAM
    ΟΤΕ - ΧΟΛΑΡΓΟΣ
    Router
    Speedport Plus
    Προσοχή, όταν τρέχουμε jar δεν διαβάζει το classpath από το command line, αλλά από το MANIFEST.MF μέσα στο jar. Πρέπει να του δώσεις μια γραμμή με Class-Path: lib/mysql-connector.jar κλπ. To lib/ εδώ αναφέρεται σε relative path σε σχέση με το που εκτελείται το jar.

    Επίσης....έχουμε αντικειμενοστραφή προγραμματισμό εδώ βρε, δεν θα βάζεις αυτές τις παραμέτρους σε κάθε κλάση. Το πιο απλό είναι να φτιάξεις μία κλάσση με static μεθόδους, πχ
    public class DB, στον constructor θα μπορείς να τις δίνεις τις παραμέτρους, ή να διαβάζει η ίδια το αρχείο. Οποτε μετά σε κάθε κλάση που θα θες να φτιάξεις ένα query θα καλείς

    Connection conn = DB.getConnection();

    και μετά κάνεις ότι έχεις να κάνεις.

    Για παράδειγμα η DB θα ήταν (δεν νομίζω να κάνει compile, στην γράφω στα γρήγορα να πάρεις μια ιδέα):

    Κώδικας:
    public class DB {
      private static Connection conn;
      private static String username;
      private static String password;
      private static String url;
      private static String params;
    
      DB() {
        Properties props = Properties.load(Class.getResourceAsStream("db.properties"));    
        username = ...
        password = ...
      }
    
      public static Connection getConnection() {
        // create connection here
      }
    
      public static closeConnection() {
        conn.flush();
        conn.close(); 
        conn = null;
      }
    }
    Αυτά για αρχή, αλλά έχει αρκετή μελέτη, και καλό είναι να παίξουν try catch.
    Heh, screw you guys... I'm going home!

  7. #7
    Εγγραφή
    27-11-2008
    Μηνύματα
    59
    Downloads
    1
    Uploads
    0
    ISP
    Tellas
    Router
    SpeedStream 4200
    SNR / Attn
    9(dB) / (dB)
    Κώδικας:
     public class db {
      private static Connection connection;
      private static String USERNAME;
      private static String PASSWORD;
      private static String DATABASE_URL;
      private static String JDBC_DRIVER;
      private Statement statement;
      private static String Properties;
    
      public void DB(int StudentID, String LastnameValue, String FirstnameValue, String AddressValue, int PhoneValue) {
        
          Properties props = Properties.valueOf(Class.forName("/db.properties"));
            
        USERNAME = props.getProperty("USERNAME");
        PASSWORD = props.getProperty("PASSWORD");
        DATABASE_URL = props.getProperty("DATABASE_URL");
        JDBC_DRIVER = props.getProperty("JDBC_DRIVER");
        
      
    
             try{
                Class.forName(JDBC_DRIVER);
            }catch (Exception exception){
                exception.printStackTrace();
            }
    
             try{
            connection = DriverManager.getConnection(DATABASE_URL,USERNAME,PASSWORD);
            }catch (SQLException sqlException){
                sqlException.printStackTrace();
            }
    
            String query;
            query = "INSERT INTO students VALUES('"+StudentID+"','"+FirstnameValue+"','"+LastnameValue+"','"+AddressValue+"','"+PhoneValue+"')";
    
    
           try{
            statement = connection.createStatement();
            statement.execute(query);
           }catch(SQLException sqlException){
            sqlException.printStackTrace();
           }
        }
    
       public void closeConnection(){
    
            try{
                statement.close();
                connection.close();
            }catch (SQLException sqlException){
    
                sqlException.printStackTrace();
            }
    
        }
    
    
    }
    Κώδικας:
    USERNAME=root
    PASSWORD=
    JDBC_DRIVER = com.mysql.jdbc.Driver
    DATABASE_URL = jdbc:mysql://localhost/unipi?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
    Εδω εχω ολη την κλαση μου και το αρχειακι db.properties που βρισκετε στο ιδιο directory με το με το mainfest.mf. Δοκιμασα να κανω κατι λιγο καθυστερημένα βεβαια και το Netabeans μου κοκκινιζει την 12 γραμμη πραγμα που σημαινει οτι κατι δεν παει καλα εκει..! Επισης δεν ξερω κατα ποσο ειναι ορθη αυτη η κλαση ως προσ την συνταξη!
    Μπορει καποιος να βοηθησει.... Ευχαριστω και παλι οσους ενδιαφερονται..

  8. #8
    Εγγραφή
    05-07-2009
    Μηνύματα
    43
    Downloads
    0
    Uploads
    0
    Παράθεση Αρχικό μήνυμα από filippakos7 Εμφάνιση μηνυμάτων
    Κώδικας:
     public class db {
      private static Connection connection;
      private static String USERNAME;
      private static String PASSWORD;
      private static String DATABASE_URL;
      private static String JDBC_DRIVER;
      private Statement statement;
      private static String Properties;
    
      public void DB(int StudentID, String LastnameValue, String FirstnameValue, String AddressValue, int PhoneValue) {
        
          Properties props = Properties.valueOf(Class.forName("/db.properties"));
    Εδω εχω ολη την κλαση μου και το αρχειακι db.properties που βρισκετε στο ιδιο directory με το με το mainfest.mf. Δοκιμασα να κανω κατι λιγο καθυστερημένα βεβαια και το Netabeans μου κοκκινιζει την 12 γραμμη πραγμα που σημαινει οτι κατι δεν παει καλα εκει..! Επισης δεν ξερω κατα ποσο ειναι ορθη αυτη η κλαση ως προσ την συνταξη!
    Μπορει καποιος να βοηθησει.... Ευχαριστω και παλι οσους ενδιαφερονται..
    H Properties.valueOf() επιστρέφει String και όχι Properties!!!
    To properties file δεν το φορτωνουνε ετσι.
    Google it
    Τελευταία επεξεργασία από το μέλος djcat : 05-11-10 στις 14:11.

  9. #9
    Εγγραφή
    27-11-2008
    Μηνύματα
    59
    Downloads
    1
    Uploads
    0
    ISP
    Tellas
    Router
    SpeedStream 4200
    SNR / Attn
    9(dB) / (dB)
    Οντως εχεις δικιο αλλα τελικα ποιο ειναι το κομματι του κωδικα που θα με βοηθησει να κανω αυτο που προτειναν τα παιδια πιο πανω....????

Παρόμοια Θέματα

  1. Μηνύματα: 12
    Τελευταίο Μήνυμα: 29-07-10, 01:31
  2. Πρόβλημα με εφαρμογή που τρέχει σε java
    Από gianna στο φόρουμ Unix - Linux
    Μηνύματα: 25
    Τελευταίο Μήνυμα: 22-02-10, 18:38
  3. Βοήθεια για Java Exception σε εφαρμογή NetBeans 6.8
    Από thanos45 στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 11
    Τελευταίο Μήνυμα: 06-02-10, 04:04
  4. Μηνύματα: 16
    Τελευταίο Μήνυμα: 08-08-07, 23:45
  5. Java ή C# για εφαρμογή?
    Από verbo στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 10
    Τελευταίο Μήνυμα: 22-12-06, 14:18

Tags για αυτό το Θέμα

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας