Avatar billede dennism Nybegynder
22. september 2006 - 19:27 Der er 40 kommentarer og
1 løsning

Java: mySQL?

Hvordan kan jeg arbejde med mySQL i Java?
Avatar billede thomaskleist Nybegynder
22. september 2006 - 19:31 #1
ja det kan man sagtens, med kan arbejde op imod alle slags databaser hvis der er lavet et API til den på gældende database. på http://www.mysql.com kan du hente en API til Java hvor der ligger alt hvad du skal bruge
Avatar billede dennism Nybegynder
22. september 2006 - 19:58 #2
Ligger der ikke noget i java.sql pakken som jeg bare kan bruge?
Avatar billede thomaskleist Nybegynder
22. september 2006 - 20:09 #3
Nej for resultset er anderledes fra Oracle sql til MySQL, Jeg du skal også bruge en driver til MySQL
Avatar billede dennism Nybegynder
22. september 2006 - 21:21 #4
Er det noget der kan køre sammen med NetBeans på Ubuntu? Kan du forklare mig lidt om, hvordan jeg gør?
Avatar billede thomaswinterberg Nybegynder
22. september 2006 - 23:31 #5
Om det er ubuntu eller Windows eller en anden distribution gør ikke en forskel.

1)
Det du først skal gøre er at hente API til den pågældende databasen. For MySQL vedkommende kan du hente filen http://dev.mysql.com/downloads/connector/j/3.1.html. Download filen Source and Binaries (tar.gz). ("mysql-connector-java-3.1.13.tar.gz") Så udpakker du filen. Du får en mapper der hedder mysql-connector-java-3.1.13. Inden i den finder du filen mysql-connector-java-3.1.13-bin.jar

2)
Kopier filen mysql-connector-java-3.1.13-bin.jar over i det bibliotek hvor din source kode ligger i netbeans/hvor du har oprettet dit projekt. Du skal nu fortælle netbeans at du gerne vil bruge API'en(mysql-connector-java-3.1.13-bin.jar), så du kan connecte til MySQL. Det gør du ved at Gå ind i tools tools> Library Manager> New Library. Her skal du tilføje filen mysql-connector-java-3.1.13-bin.jar


3) Og så skal du lave din source kode. "Et lille eksempel" 

// Test er det navn du har defineret til at være navnet på din database i mysql
   

import java.sql.*;

public class MyDataSql
{

public static void main(String args[])
{
  try
  {
  Class.forName("com.mysql.jdbc.Driver");
  Connection con = DriverManager.getConnection("jdbc:mysql://localhost/Test", "bruger", "password");
 
    Statement statement = con.createStatement();
    ResultSet rs = statement.executeQuery("SELECT * FROM books");
      while(rs.next())
      {   
        int res1 = rs.getInt(1);
        String res2 = rs.getString(2);
        System.out.println(res1 + " " + res2);
      }


  }
  catch (Exception e)
  {
    e.printStackTrace();
  }


// sig lige til hvis det ikke virker. Så må jeg jo installere NetBeans, da jeg til daglig bruger Eclipse. Jeg er desværre ikke så skrap til NeBeans

}
}
Avatar billede dennism Nybegynder
23. september 2006 - 10:16 #6
Tusind tak for svaret!

jeg har dog et lille problem, når jeg forsøger at compile:

/home/dennis/Java/MyDataSql/src/mydatasql/Main.java:3: class MyDataSql is public, should be declared in a file named MyDataSql.java
public class MyDataSql {

Kan du hjælpe med denne?
Avatar billede mikkelbm Nybegynder
23. september 2006 - 10:53 #7
I Java skal klassenavn og filnavn være ens. Derfor skal du enten ændre klassenavnet til Main eller ændre filnavnet til MyDataSql.java
Avatar billede dennism Nybegynder
23. september 2006 - 12:04 #8
Det giver mig så blot et nyt problem:

deps-jar:
Compiling 1 source file to /home/dennis/Java/MyDataSql/build/classes
compile:
run:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at Main.main(Main.java:7)
BUILD SUCCESSFUL (total time: 1 second)
Avatar billede mikkelbm Nybegynder
23. september 2006 - 12:10 #9
Har du husket at putte mysql.jar i din classpath?
Avatar billede dennism Nybegynder
23. september 2006 - 12:32 #10
Nej!? Hvor er mysql.jar og hvor er min classpath? :)
Avatar billede thomaswinterberg Nybegynder
23. september 2006 - 13:34 #11
Det er "mysql-connector-java-3.1.13-bin.jar" filen han mener. Den du har downloaded.
Du skal putte i din classpath. Det betyder at du skal fortælle netbeans hvor filen ligger. Når NetBeans så compiler din kode kigger den i din jar fil efter f.eks Class.forName("com.mysql.jdbc.Driver"); klassen og vil så compile din source kode udn problemer

Det gør du ved at Gå ind i tools tools> Library Manager> New Library. Her skal du tilføje filen mysql-connector-java-3.1.13-bin.jar
Avatar billede thomaswinterberg Nybegynder
23. september 2006 - 13:38 #12
din mysql-connector-java-3.1.13-bin.jar fil er såmænd bare en fil der er pakket i jar formatet , a al  en zip fil. HVis du åbner filen
Avatar billede thomaswinterberg Nybegynder
23. september 2006 - 13:39 #13
vil du såmænd se en masse class filer
Avatar billede dennism Nybegynder
23. september 2006 - 13:54 #14
Jeg har lagt .jar-filen i roden af netbeans-mappen. Er det forkert?
Avatar billede thomaswinterberg Nybegynder
23. september 2006 - 14:07 #15
Nej. Gå nu ind i NetBeans. Gå ind i Tools> Library Manager> New Library. Når du klikker på New Library skulle det være muligt at bowse. Så browser du hen hvor din jar fil ligger og vælger den. Virker det ?
Avatar billede dennism Nybegynder
23. september 2006 - 14:22 #16
Det har jeg allerede gjort - så det er næppe det der er problemet!
Avatar billede thomaswinterberg Nybegynder
23. september 2006 - 15:20 #17
Har lige installeret NetBeans. Hmm kan godt huske hvorfor jeg i sin tid kvittede netbeans til fordel for Eclipse. Prøv det her link:
www.netbeans.org/kb/41/using-netbeans/dbconn.html+add+jar" target="_blank">http://66.249.93.104/custom?q=cache:J6irRI__GcgJ:www.netbeans.org/kb/41/using-netbeans/dbconn.html+add+jar,+mysql&hl=en&ct=clnk&cd=4
Prøv med punktet:
Make the Database Driver Available to the IDE
Når jeg gør det og jeg trykker F9 for at compile får jeg ingen fejl
Avatar billede dennism Nybegynder
23. september 2006 - 15:29 #18
Den mulighed har jeg slet ikke i Linux.

I vejledningen kan de finde classer i driveren mm.
Jeg har kun mulighed for at Class Library - det er det.. Eller gør jeg noget forkert?
Avatar billede dennism Nybegynder
23. september 2006 - 21:58 #19
Kan I ikke hjælpe mig? :(
Avatar billede arne_v Ekspert
23. september 2006 - 22:02 #20
hvilken version af NetBeans ?
Avatar billede dennism Nybegynder
23. september 2006 - 22:15 #21
NetBeans 5.5 Beta2 :)
Avatar billede dennism Nybegynder
23. september 2006 - 23:53 #22
Hvad siger du til det, arne_v?
Avatar billede arne_v Ekspert
23. september 2006 - 23:56 #23
at jeg stadig er på 4.1

:-)

i min version har projektet et under item "Libraries" som man kan højreklikke
på og vælge "Add jar/folder"
Avatar billede dennism Nybegynder
24. september 2006 - 00:27 #24
Så fik jeg det også op at køre..

Hvor finder jeg documentation for de klasser der bruges i forbindelse med dette? Kunne godt tænke mig en forklaring af getInt og getString :)
Avatar billede dennism Nybegynder
24. september 2006 - 00:32 #25
Hvorfor må jeg ikke dette:
            ResultSet rs2 = statement.executeQuery("INSERT INTO books (1,2) VALUES (14,'test')");
Avatar billede arne_v Ekspert
24. september 2006 - 01:18 #26
Avatar billede arne_v Ekspert
24. september 2006 - 01:19 #27
int rowsinserted = statement.executeUpdate("INSERT INTO books (1,2) VALUES (14,'test')");
Avatar billede dennism Nybegynder
24. september 2006 - 10:50 #28
Ved du, hvorfor jeg får denne fejl:
java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1,2) VALUES (14,'test')' at line 1
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
Avatar billede dennism Nybegynder
24. september 2006 - 12:16 #29
Et andet problem; hvis jeg f.eks. har en tabel i min database, med kollonerne name og age, og to rækker med:
Peter, 27
Hans, 25

Hvordan kan jeg så lave en query som udskriver dem?
Avatar billede arne_v Ekspert
24. september 2006 - 17:03 #30
INSERT INTO books (felt1,felt2) VALUES (14,'test')

der skal angives feltnavne der
Avatar billede arne_v Ekspert
24. september 2006 - 17:04 #31
query fremgår af Thomas's eksempel ovenfor
Avatar billede dennism Nybegynder
24. september 2006 - 17:28 #32
Hvordan ved jeg, hvad getInt(1) og getString(2) referer til?
er det fordi kolonnerne hedder 1 og 2, eller?
Avatar billede arne_v Ekspert
24. september 2006 - 17:38 #33
ja
Avatar billede dennism Nybegynder
24. september 2006 - 17:57 #34
Dvs. at hvis jeg har en kolonne som f.eks. hedder age af typen varchar, så skal jeg hente den med getString(age)? :)
Avatar billede arne_v Ekspert
24. september 2006 - 18:00 #35
nej

du kan enten hente den med getString(7) hvis age er kolonne nummer 7 i select output
eller med getString("age")
Avatar billede dennism Nybegynder
25. september 2006 - 19:48 #36
Tak, smider I et svar?

Kan I evt. hjælpe her:
http://www.eksperten.dk/spm/734558
Avatar billede arne_v Ekspert
26. september 2006 - 04:11 #37
jeg antager nogen af dem som var på banen før mig
Avatar billede bertelsenbo Nybegynder
26. september 2006 - 09:54 #38
Hej Dennis, jeg er skam også lige begyndt på mySQL med JAVA. Sjovt nok sidder jeg også på ubuntu, administrerer du mysql fra terminal vinduet? Eller har du været god nok til at få mysql GUI til at virke på Ubuntu? Er interesseret :) tilføj mig på msn bo@bert.dk hvis du får lyst
Avatar billede dennism Nybegynder
27. september 2006 - 09:25 #39
Du er hermed tilføjet.

Må jeg bede om et svar, så vi kan få lukket her? :)
Avatar billede dennism Nybegynder
02. oktober 2006 - 22:10 #40
Nogen der kan hjælpe her:
http://www.eksperten.dk/spm/736084
Avatar billede dennism Nybegynder
16. oktober 2006 - 12:47 #41
.lukker
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