Avatar billede vedikkebedre Nybegynder
06. juli 2004 - 21:56 Der er 16 kommentarer og
1 løsning

MySQL connection

Hejsa alle i E'er

Jeg sidder og forsøger mig lidt frem med at få fat i en MySQL-database via java (jsp kan altid komme senere - lige nu vil jeg blot bygge en java-klasse som kan skabe adgang til databasen, og afvikle SQL's og returnerer Resultset).

Men jeg er gået helt i stå......  :(

Har downloadet MySQL og MySQL CC - og det virker. Kan i hverte fald oprette en database med ny tabel osv. Har også fået lagt data ind i den nye tabel - det siger MySQL CC i hverte fald.

Så har jeg downloaded MyODBC-standard-3.51.8-win.exe og eksekveret denne fil.

Men jeg kan ikke få forbindelse !?!?!???

Min kode:

public void testConnection() {
    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;

    try {
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mytest:user=myuser&password=myuser");

        stmt = con.createStatement();
        StringBuffer sqlString = new StringBuffer("SELECT * FROM name");
        rs = stmt.executeQuery(sqlString.toString());

        while (rs.next()) {
            System.out.println("Firstname: " + rs.getString(1) + " LastName: " + rs.getString(2));
        }

    } catch (SQLException sex) {
        // handle any errors
        System.out.println("SQLException: " + sex.getMessage());
        System.out.println("SQLState: " + sex.getSQLState());
        System.out.println("VendorError: " + sex.getErrorCode());
    } catch (Exception ex) {
        System.out.println("Exception: " + ex.getMessage());
    }

}

Koden er lidt klippen fra andre spørgsmål her på sitet. SÅ det kan ikke udelukkes at det er der problemer er  :)

Den nye database jeg har lavet hedder "mytest" - username og password er i begge tilfælde "myuser". Tabellen hedder "name" og har to kolonner - "Firstname" og "Lastname".

Lige nu fejler koden i linien:
Class.forName("com.mysql.jdbc.Driver");

med fejlen:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Men afviklingen af filen:
MyODBC-standard-3.51.8-win.exe

siger at alt er gået godt.

Nogle gode forslag???

Mvh
vedikkebedre
Avatar billede vedikkebedre Nybegynder
06. juli 2004 - 21:57 #1
Bruger IBM Visual Age for Java som vækrtøj og arbejder på en winXP platform
Avatar billede arne_v Ekspert
06. juli 2004 - 21:58 #2
Du skal downloade MySQL JDBC driver og putte den jar fil i classpath !
Avatar billede arne_v Ekspert
06. juli 2004 - 21:59 #3
Avatar billede arne_v Ekspert
06. juli 2004 - 22:00 #4
hent ZIP
unzip
tilføj den udpakkede jar fil til classpath (kan ikke huske hvordan man gør det i VAJ)
Avatar billede vedikkebedre Nybegynder
06. juli 2004 - 22:00 #5
ikke forstået !??!?!???

Skal jeg hente zip eller tar.gz  og så lægge den et sted hvorefter jeg tillægger den classpath ????
Avatar billede arne_v Ekspert
06. juli 2004 - 22:03 #6
du henter zip filen
unzipper filen
og tilføjer den jar fil som som var inden i zip filen til din classpath
Avatar billede vedikkebedre Nybegynder
06. juli 2004 - 22:07 #7
Har hentet filen ind i VAj osv.

Nu fejler den i linien:
con = DriverManager.getConnection("jdbc:mytest:user=myuser&password=myuser");


Fejlen lyder:

java.sql.SQLException: No suitable driver
Avatar billede arne_v Ekspert
06. juli 2004 - 22:09 #8
Syntax skal være:

con = DriverManager.getConnection("jdbc:mysql://server:port/database", "bruger", "kodeord");
Avatar billede arne_v Ekspert
06. juli 2004 - 22:10 #9
evt.

con = DriverManager.getConnection("jdbc:mysql://server:port/database?user=bruger&password=kodeord");
Avatar billede arne_v Ekspert
06. juli 2004 - 22:10 #10
default port 3306 kan undlades
Avatar billede vedikkebedre Nybegynder
06. juli 2004 - 22:17 #11
Hej Arne_V

Det virker sq  :)

Takker for hjælpen.

Hvis jeg nu en dag vil leje lidt med med en JBoss eller Tomcat - hvordan sætter jeg så JBDC-driver op til at være mere server-afhængig - og ikke her hvor det er mit udviklingsmiljø der har den.

Det hænger lidt sammen med et andet af mine spørgsmål her på sitet:
http://eksperten.dk/spm/516165

P.s. smid et svar - du har fortjent alle point
Avatar billede arne_v Ekspert
06. juli 2004 - 22:18 #12
svar
Avatar billede arne_v Ekspert
06. juli 2004 - 22:20 #13
Tomcat JSP & servlets - flere muligheder bl.a.:

* standard JDBC helt ligesom her

* brug af Tomcat connection pool og lookup af connections via JNDI

  se f.eks. http://www.eksperten.dk/artikler/50
Avatar billede vedikkebedre Nybegynder
06. juli 2004 - 22:22 #14
OK - der gennemgår du hvordan man forbinder sin Tomcat til MySQL-serveren og laver pool-connections osv. Den artikel vil jeg straks købe.
Avatar billede arne_v Ekspert
06. juli 2004 - 22:23 #15
JBoss og EJB's:

helt sikkert lookup af connections via JNDI

Der deployer du en datasource descriptor - eksempel:

testmysql-ds.xml

<datasources>
  <local-tx-datasource>
    <jndi-name>TestMySQL</jndi-name>
    <connection-url>jdbc:mysql://localhost/Test</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name></user-name>
    <password></password>
    <min-pool-size>5</min-pool-size>
    <max-pool-size>100</max-pool-size>
  </local-tx-datasource>
</datasources>

JNDI lookup fra JSP og servlets er ligeosm for Tomcat.

entity beans er et stort kapitel som jeg ikke kan beskrive her

du kan få en kort intro her http://www.eksperten.dk/artikler/182
Avatar billede vedikkebedre Nybegynder
06. juli 2004 - 22:32 #16
Min tanke var noget med at have en RedHat9 + Tomcat + MySQL kørende med et domæne, hvortil jeg vil bruge gratisDNS.dk som DNS-provider.

SÅ det bliver jo noget med at lave en jsp-side som jeg kan inkluderer med class' til database-connections - og returnering af ResultSet i forbindelse med select-sætninger. Tror det er lidt for meget at lave en EJB til database-forbindelserne i første hug - og Tomcat kan ikke køre EJB'er.

Så indtil jeg får samlet en større maskine bliver det uden EJB'er  /:
Avatar billede arne_v Ekspert
06. juli 2004 - 22:40 #17
Lyder meget fornuftigt.
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