Avatar billede imnewb Nybegynder
16. august 2005 - 21:02 Der er 55 kommentarer og
1 løsning

Java - MySQL - BlueJ?

Skal man bruge programmer eller lign. for at få connect til MySQL? - i JAVA?

Vil gerne have en lille stump kode hvor man connecter til sin database + henter et udtræk, så jeg ved hvordan det vil se ud.

og hvis nogle selv sidder med BlueJ og kan connecte til MySQL vil jeg gerne vide \"hvordan\"

På forhånd tak!
Avatar billede arne_v Ekspert
16. august 2005 - 21:05 #1
Du skal have MySQL Connector for Java
Avatar billede arne_v Ekspert
16. august 2005 - 21:05 #2
super simpelt eksempel:

import java.sql.*;

public class MySQLTest {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/Test", "", "");
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM T1");
        while(rs.next()) {
            int f1 = rs.getInt(1);
            String f2 = rs.getString(2);
            System.out.println(f1 + " " + f2);
        }
    }
}
Avatar billede imnewb Nybegynder
16. august 2005 - 21:17 #3
Hvordan skaffer jeg en MySQL Connector til BlueJ så?
Avatar billede arne_v Ekspert
16. august 2005 - 21:18 #4
Avatar billede imnewb Nybegynder
16. august 2005 - 21:24 #5
Smider jeg bare filerne ind i mapperne (til BlueJ)- fra zip filen?
Avatar billede arne_v Ekspert
16. august 2005 - 21:26 #6
du skal unzipp den

og så skal jar filen være i dens classpath

og nej - jeg ved ikke hvordan man sætter classpath i BlueJ
Avatar billede imnewb Nybegynder
16. august 2005 - 21:30 #7
C:\roz\java\new>java MySQLTest
Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at MySQLTest.main(MySQLTest.java:5)


Har godt nok "Driver.java" i den fil som den linker til, hvad er ellers årsagen?
Avatar billede imnewb Nybegynder
16. august 2005 - 21:31 #8
- og kan du fortælle mig hvad:
  Connection con = DriverManager.getConnection("jdbc:mysql://localhost/Test", "", "");

gør? - du skal regne med jeg er nybegynder jo :)
Avatar billede arne_v Ekspert
16. august 2005 - 21:32 #9
java -classpath .;C:\dir\langtnavn-jar MySQLTest
Avatar billede arne_v Ekspert
16. august 2005 - 21:33 #10
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/Test", "", "");

jdbc = Java DataBase Connection
mysql = gæt 3 gange
localhost = navn på server hvor MySQL kører
Test = navn på database
"" = brugernavn (tomt i mit tilfælde)
"" = password (tomt i mit tilfælde)
Avatar billede arne_v Ekspert
16. august 2005 - 21:34 #11
kender du PHP eller ASP ?
Avatar billede imnewb Nybegynder
16. august 2005 - 21:35 #12
C:\roz\java\new>java -classpath C:\roz\java\new-jar MySQLTest
Exception in thread "main" java.lang.NoClassDefFoundError: MySQLTest
Avatar billede imnewb Nybegynder
16. august 2005 - 21:35 #13
´Jeps, så bare underligt ud i Java.
Avatar billede imnewb Nybegynder
16. august 2005 - 21:38 #14
int f1 = rs.getInt(1);
            String f2 = rs.getString(2);
            System.out.println(f1 + " " + f2);

hvor henter den udtrækket?

2.
Hvad hvis min url til mysql på localhost er http://localhost/mysql/

er det så bare
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/mysql/Test", "", ""); - eller? :'/
Avatar billede arne_v Ekspert
16. august 2005 - 21:39 #15
du skal have

-classpath .;navn-på-mysql-jar-fil
Avatar billede arne_v Ekspert
16. august 2005 - 21:40 #16
rs.next() henter en række

rs.getInt(1)
rs.getString(2)

henter kolonne 1 og 2 i den hentede række
Avatar billede imnewb Nybegynder
16. august 2005 - 21:41 #17
jdbc2_0-stdext.jar ?
Avatar billede imnewb Nybegynder
16. august 2005 - 21:43 #18
C:\roz\java\new>java -classpath .;jdbc/Driver test
Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driv
er
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at test.main(test.java:5)

C:\roz\java\new>java -classpath .;jdbc/Driver test
Avatar billede imnewb Nybegynder
16. august 2005 - 21:43 #19
men i C:\Config.Msi\BlueJ\com\mysql\jdbc er Driver.java
Avatar billede arne_v Ekspert
16. august 2005 - 21:47 #20
da du unzippede den zip fil du doenloadede fra MySQL fik du en .jar fil med et meget langt navn

det er den som skal i classpath
Avatar billede imnewb Nybegynder
16. august 2005 - 21:55 #21
C:\roz\java\new>java -classpath .;jdbc/mysql-connector-java-3.1.10-bin-g.jar tes
t
Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driv
er
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at test.main(test.java:5)
Avatar billede imnewb Nybegynder
16. august 2005 - 21:55 #22
denne ikke? mysql-connector-java-3.1.10-bin-g.jar tes
Avatar billede arne_v Ekspert
16. august 2005 - 21:58 #23
min hedder kun mysql-connector-java-3.1.7-bin.jar

har du ikke en mysql-connector-java-3.1.10-bin.jar ?
Avatar billede arne_v Ekspert
16. august 2005 - 21:58 #24
og ligger den i C:\roz\java\new\jdbc ?
Avatar billede imnewb Nybegynder
16. august 2005 - 22:19 #25
nej, skal den det?
Avatar billede arne_v Ekspert
16. august 2005 - 22:20 #26
du skriver

jdbc/mysql-connector-java-3.1.10-bin-g.jar

det betyder mysql-connector-java-3.1.10-bin-g.jar i et subdir jdbc under nuværende dir
Avatar billede imnewb Nybegynder
16. august 2005 - 22:21 #27
Microsoft Windows XP [version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Ejer>cd C:\roz\java\new

C:\roz\java\new>java -classpath .;mysql-connector-java-3.1.10-bin.jar test
Exception in thread "main" com.mysql.jdbc.CommunicationsException: Communication
s link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused: connect

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused: connect

        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.ja
va:156)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:283)
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:2541)
        at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java
:264)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at test.main(test.java:6)


** END NESTED EXCEPTION **



Last packet sent to the server was 93 ms ago.
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:2607)
        at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java
:264)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at test.main(test.java:6)

C:\roz\java\new>
Avatar billede imnewb Nybegynder
16. august 2005 - 22:22 #28
Hvad betyder det?
Avatar billede arne_v Ekspert
16. august 2005 - 22:25 #29
det antyder lidt at der ikke er en MySQL server på den adresse du connecter til
Avatar billede arne_v Ekspert
16. august 2005 - 22:26 #30
hvordan connecter du til din MySQL fra PHP/ASP/whatever ?
Avatar billede imnewb Nybegynder
16. august 2005 - 22:28 #31
Klart, hehe. Skulle nok lige åbne Apache og mysql :P
Men mange tak for hjælpen.

Men sig mig liige. Hvorfor ikke gøre det ved en g.drawString?

Den melder fejl hos mig.

import java.sql.*;
import java.applet.*;

public class test {
    public static void main(String[] args) throws Exception {

        public void paint(Graphics g) {

        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/chatlog", "root", "");
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM text");
        while(rs.next()) {
            int f1 = rs.getInt(2);
            String f2 = rs.getString(3);
           
          g.drawString(f1 + ": " + f2,5,5);
        }
    }
}

Kan man ikke sætte ... paint(grapic blablabla) efter det andet?
hos mig udskriver den
Illegal start of
Avatar billede imnewb Nybegynder
16. august 2005 - 22:29 #32
- expression
Avatar billede arne_v Ekspert
16. august 2005 - 22:31 #33
du har sat din paint metode inden i din main metode det kan du ikke
Avatar billede imnewb Nybegynder
16. august 2005 - 22:32 #34
Hvordan kan jeg lave det om så? Har ikke så meget forstand på klasser
Avatar billede arne_v Ekspert
16. august 2005 - 22:35 #35
enten bruger du main og System.out.println (console app) eller
du lader klassen arve fra Applet, dropper main og har en paint som bruger
g.drawString
Avatar billede imnewb Nybegynder
16. august 2005 - 22:36 #36
Nu må du ikke grine :)

import java.sql.*;
import java.applet.*;
import java.awt.*;

public class test {
        public void paint(Graphics g) throws Exception {

     
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/chatlog", "root", "");
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM text");
        while(rs.next()) {
            int f1 = rs.getInt(2);
            String f2 = rs.getString(3);
           
          g.drawString(f1 + ": " + f2,5,5);
        }
    }
}

- Udskriver ingen fejl, kun når man ser filen?
Avatar billede arne_v Ekspert
16. august 2005 - 22:39 #37
du mangler at extende Applet
Avatar billede arne_v Ekspert
16. august 2005 - 22:39 #38
jeg er iøvrigt ikke sikker på at det er din mening kun at udskrive
den sidste række
Avatar billede imnewb Nybegynder
16. august 2005 - 22:42 #39
Okay, må jo lige se hvad jeg kan finde ud af :-) Skal jo prøve alt, hehe..

public void paint(Graphics g) extends Applet {
siger den:
";" extended.

Der mangler da ikke en ";" ?
Avatar billede arne_v Ekspert
16. august 2005 - 22:44 #40
public class test  extends Applet {
Avatar billede arne_v Ekspert
16. august 2005 - 22:44 #41
har du en bog som du gør fremefter ?
Avatar billede imnewb Nybegynder
16. august 2005 - 22:49 #42
Ja, har 2 bøger som jeg har sat mig meget ind i, her i de sidste dage. Men nogle gange får jeg en skør idé og vil lære noget nyt, så derfor spørge jeg jer. :)

import java.sql.*;
import java.applet.*;
import java.awt.*;

public class test extends Applet {
        public void paint(Graphics g) {

     
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/chatlog", "root", "");
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM text");
        while(rs.next()) {
            int f1 = rs.getInt(2);
            String f2 = rs.getString(3);
           
          g.drawString(f1 + ": " + f2,5,5);
        }
    }
}


-- virker da ikke *s* udskriver:
unreported exepetion  java.lang.ClassNotFoundExeption; must  be caurth or declared to be thown.

Hvis jeg så sætter throws Exception  bagved void paint(grap .. osv) så siger den noget andet med "container"
Avatar billede arne_v Ekspert
16. august 2005 - 22:50 #43
du bliver nødt til at catche ClassNotFoundExeption og SQLException
Avatar billede imnewb Nybegynder
16. august 2005 - 22:56 #44
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
CommThread started.
I/O Error during operation.
Disconnecting... done.
CommThread ended.
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Har lige catche, me hvordan catcher jeg SQLEceptionen?


import java.sql.*;
import java.applet.*;
import java.awt.*;

public class test extends Applet {
        public void paint(Graphics g)  {

      try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/chatlog", "root", "");
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM text");
        while(rs.next()) {
            int f1 = rs.getInt(2);
            String f2 = rs.getString(3);
            g.setColor(Color.black);
          g.drawString(f1 + ": " + f2,100,100);
        }
    }
        catch (Exception e) {
            System.out.println(e);
       
    }
}
    }
Avatar billede arne_v Ekspert
16. august 2005 - 22:57 #45
når du catcher Exception så catcher du alt
Avatar billede arne_v Ekspert
16. august 2005 - 22:59 #46
når en applet skal bruge en ekstern jar fil
skal du:

- pakke applet class filen/filerne i en egen jar fil

- din egen jar file skal have et manifest

- det manifest skal have et Class-Path direktiv som peger på de eksterne jar filer
Avatar billede imnewb Nybegynder
16. august 2005 - 23:03 #47
Behøves det da ikke, gør det?
Avatar billede arne_v Ekspert
16. august 2005 - 23:06 #48
jo
Avatar billede imnewb Nybegynder
16. august 2005 - 23:11 #49
Kan du forklare mig på vej så? Hvad er manifest? Ved ikke om du har opdaget jeg er nybegynder, hehe.
Avatar billede arne_v Ekspert
16. august 2005 - 23:14 #50
Avatar billede imnewb Nybegynder
16. august 2005 - 23:16 #51
Dvs. man kan ikke hente MySQL ud til en g.drawString? - med mindre man skal sidde og lave det, som jeg ikke forstår?
Avatar billede arne_v Ekspert
16. august 2005 - 23:19 #52
jo men så skal du lave en helt 3. slags program nemlig en GUI app

hvis du arver fra Frame fremfor Applet, har en Main som laver et objekt
af typen din klasse
Avatar billede arne_v Ekspert
16. august 2005 - 23:20 #53
til inspiration:

import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class Sinus extends Frame {
  Vector points;
  public Sinus() {
      points = new Vector();
      int w = 400;
      int h = 300;
      setSize(w, h);
      for (int x = 0; x < w; x++) {
        int y = (int)(0.5 * h + 0.4 * h * Math.sin(x * 5 * Math.PI / w));
        points.addElement(new Point(x, y));
      }
      setVisible(true);
      addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
      });
  }
  public void paint(Graphics g) {
      for (int i = 0; i < points.size(); i++) {
        Point p = (Point) points.elementAt(i);
        g.drawRect(p.x, p.y, 2, 2);
      }
  }
  public static void main(String[] args) {
      new Sinus();
  }
}
Avatar billede imnewb Nybegynder
16. august 2005 - 23:27 #54
Probber jeg bare .class filen ind i en .JAR fil jeg laver?
fil.class -> der.jar
der.jar -> HTML
HTML ->
<applet codebase="http://www.side.dk/jar/" code="mappeFraJar.fil" archive="der.jar" width="100%" height="100%">
</applet>
Avatar billede imnewb Nybegynder
17. august 2005 - 18:49 #55
Men smid svar!
Avatar billede arne_v Ekspert
18. august 2005 - 14:37 #56
der står alt om jar filer i det link jeg angav ovenfor

og svar
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