Avatar billede a38 Nybegynder
03. december 2002 - 16:42 Der er 10 kommentarer og
1 løsning

Java og mysql

Jeg skal lave en lille application der skal connecte med en mySQL database. Jeg vil meget gerne have en meget udførlig beskrivelse da jeg er novice i Java.
En lille GUI, og en forklaring af klasse opbygning ville virkelig hjælpe!!
Avatar billede arne_v Ekspert
03. december 2002 - 16:51 #1
Separer GUI delen og database delen.

GUI delen bruger du Swing til.

Database delen bruger du JDBC til.

For at lave database delen:
  - downloader du MySQL JDBC driver og installerer den
  - skriver koden der connecter til databasen
      * Class.forName på JDBC driveren
      * DriverManager.getConnection til database
        url med username og password

Kode eksempler på JDBC adgang til MySQL kan findes
her på eksperten eller ved at kigge i JDBC dokumentationen
og bare indsætte det MySQL specifikke.

Det er nok svært at hjælpe med din GUI uden at vide,
hvad den skal kunne.
Avatar billede a38 Nybegynder
03. december 2002 - 17:22 #2
OK her er lidt mere indput!

Jeg skal connecte til en database : jdbc:mysql://ishtar.imv.au.dk/stinne

Databasenavn : Stinne
Brugernavn  : Stinne
Kode        : ******

Jeg skal bruge driveren : org.gjt.mm.mysql.Driver   

Det jeg har lavet indtil videre ser således ud... men det virker sku ikke :( er der nogen der kan hjælpe med 3 ting!

A : Hvorledes "adder" jeg driveren til classpath, jeg bruger Jbuilder

B : Er der nogen fejl i min kode?

C : Kan nogen hjælpe med en lille grafisk brugerflade med et tekstfelt der  kan udskrive det der ligger på Databasen.

KODE : et lille forsøg, men som sagt jeg er ikke sikker på at det er den smarteste måde. Jeg er i tvivl om jeg skal bruge 2 klasser i stedet!??

package dbconnect;

/**
* <p>Title: dbConnect </p>
* <p>Description: arghhhh  </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: IMV </p>
* @author A38
* @version 1.0 - semi definitiv beta... under udvikling!
*/

import java.sql.*;
import com.borland.dx.sql.dataset.*;

public class dbConnect {
  private Database database1 = new Database();
    public static void main(String args[]) {

        String username;
        String password;
        String url;
        String dropString;
        String createString;

        // ---- configure START
        username = "stinne";
        password = "xQfi#t";
        // The URL that will connect to TECFA's MySQL server
        // Syntax: jdbc:TYPE:machine:port/DB_NAME
        url = "jdbc:mysql://ishtar.imv.au.dk/stinne";
        // ---- configure END

        // 2 SQL Statements we will send to the COFFEEBREAK db
        dropString = "drop table BESTILLING ";
        createString = "create table BESTILLING " +
                            "KUNDE_ID INTEGER, " +
                            "(NAVN_KUNDE VARCHAR(32), " +
                            "(ADRESSE_KUNDE VARCHAR(60), " +
                            "(BESTILLING_KUNDE VARCHAR(60), " +
                            "TOTAL INTEGER, " +
                            "(MAIL_KUNDE VARCHAR(60)";

        // Kan jeg installere / Load driveren på denne måde, og hvor skal
        // jeg placere den??
        try {
            Class.forName("org.gjt.mm.mysql.Driver");
        } catch(java.lang.ClassNotFoundException e) {
            System.err.print("ClassNotFoundException: ");
            System.err.println(e.getMessage());
        }

        try {
            Connection con;
            Statement stmt;

            // Lad mig så for satan få gang i banditten!!
            con = DriverManager.getConnection(url, username, password);
            System.out.println ("Nu vil jeg gerne at den laver et table der hedder bestilling på Ishtar DB:");

            // Lav et Statement Object (bruges til simple SQL statements)
            stmt = con.createStatement();
            // Send 2 statements (works for INSERT, UPDATE, DELETE, DROP)
            stmt.executeUpdate(dropString);
            System.out.println ("BESTILLING table slettet");
            stmt.executeUpdate(createString);
            System.out.println ("BESTILLING table oprettet igen");
            // Luk skidtet!
            stmt.close();
            con.close();

        }
        // Lad os også se om der er nogen fejl?
        catch(SQLException ex) {
            System.err.println("==> SQLException: ");
            while (ex != null) {
                System.out.println("Message:  " + ex.getMessage ());
                System.out.println("SQLState:  " + ex.getSQLState ());
                System.out.println("ErrorCode: " + ex.getErrorCode ());
                ex = ex.getNextException();
                System.out.println("");
            }
        }

    }

  public dbConnect() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  private void jbInit() throws Exception {
  }
}
Avatar billede arne_v Ekspert
03. december 2002 - 17:52 #3
A)

Højre-klik på projekt, vælg properties, vælg paths,
vælg required libraries og tilføj jar-filen der.
Avatar billede arne_v Ekspert
03. december 2002 - 17:54 #4
B)

Koden ser umiddelbart meget OK, men jeg prøver lige om
JBuilder kan finde noget.
Avatar billede arne_v Ekspert
03. december 2002 - 17:57 #5
mere B)

slet:

import com.borland.dx.sql.dataset.*;
private Database database1 = new Database();

dem bruger du ikke.
Avatar billede arne_v Ekspert
03. december 2002 - 18:02 #6
mere B)

Når jeg kører den, så får jeg først fejl ved
DELETE af tabel:

Nu vil jeg gerne at den laver et table der hedder bestilling på Ishtar DB:

Message:  General error: Unknown table 'BESTILLING'

SQLState:  S1000

ErrorCode: 1051

så det ser ud til at virke.
Avatar billede arne_v Ekspert
03. december 2002 - 18:04 #7
C)

GUI er ikke lige mig.

Men prøv of brug JBuilders new wizard til at lave en frame
og så brug designeren til at putte komponenter på framen.

Så laver du noget kode i din database klasser der kan hente
alle data.

Og så kalder GUI'en den database kode.
Avatar billede a38 Nybegynder
03. december 2002 - 19:45 #8
Hay Arne... efter lidt fiflen med Jbuilder som jeg først lige er begyndt at bruge igår (arrrgggh den genererer meget kode hvis man ikke paseer på!!, den er jo værre end dreamweaver!) Så virker skidtet sku!! JEPEEEEE
Tak for hjælpen 100 point veltjent!! Tak for de hurtige svar jeg kommer nok til at skulle bruge lidt mere hjælp, men det må vi jo se på, så skal der nok lidt flere point på bordet.
Mit humør er lige steget 20 grader mindst!! tak igen.
Avatar billede a38 Nybegynder
03. december 2002 - 19:47 #9
BTW jeg får samme error , mon jeg overhovedet har brug for den drop table command?? Vi får se Snakkes forhåbentlig :)
Avatar billede arne_v Ekspert
03. december 2002 - 19:48 #10
Det er altid herligt når noget virker.

Jeg kender flere som bruger den teknik, når de skal lave
GUI, at de har to Java filer:
  - en garbage hvor de lader JBuilder generere
  - en rigtig hvor de selv skriver tingene men inspireret
    udfra hvad JBuilder har genereret i garbage filen
Avatar billede arne_v Ekspert
03. december 2002 - 19:49 #11
Du skal kun droppe den tabel, hvis den eksisterer i forvejen.

Men catch den exception og kør videre.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester