Avatar billede bentblod Nybegynder
14. november 2005 - 20:05 Der er 22 kommentarer og
1 løsning

kontakt til mysql

Hey, ville bare høre om nogen vidste hvordan man oprettede forbindelse til en mysql server, evt. et eksempel på det?
Avatar billede Slettet bruger
14. november 2005 - 20:13 #1
Min singleton som jeg bruger til connection til MySql

package maxicom.wincar.dm.dbaccess;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


/**
* Insert the type's description here.
* Creation date: (31-01-00 21:46:44)
* @author:
*/
public class DBAccess {

    private static DBAccess singleInstance = null;
    private String driverName = "";
    private String dbUrl = ""; //hjemme

    private static Connection conn = null;
    /**
    * DBAccess constructor comment.
    */
    private DBAccess() {
        super();
        try {
            driverName = "org.gjt.mm.mysql.Driver";
            dbUrl = "jdbc:mysql://server2003:3306/[datanbase]?user=[bruger]&password=[adgangskode]";
           

            // Get an instance of the JDBC driver
            Class.forName(driverName).newInstance();

            // Create a connection object
            conn = DriverManager.getConnection(dbUrl);
        } catch (Exception e) {
            //Hvis den går ned lukker vi denne connection og åbner en ny
            close();
            singleInstance = new DBAccess();
            e.printStackTrace();
        }

    }

    public java.sql.Connection getConn() {
        return conn;
    }

    public static DBAccess getInstance() {
        if (singleInstance == null) {
            singleInstance = new DBAccess();
        }
        return singleInstance;
    }

    public java.sql.Statement getStmt() throws SQLException {
        // Create a statement object
        return (conn.createStatement());
    }
   
    public static void close(){
        try {
            conn.close();
            singleInstance = new DBAccess();
        } catch (Exception e) {
            e.printStackTrace();
        }
       
    }
}
Avatar billede arne_v Ekspert
14. november 2005 - 20:20 #2
driverName = "org.gjt.mm.mysql.Driver";
dbUrl = "jdbc:mysql://server2003:3306/[datanbase]?user=[bruger]&password=[adgangskode]";
Class.forName(driverName).newInstance();
conn = DriverManager.getConnection(dbUrl);

ville jeg nok lave som:

driverName = "com.mysql.jdbc.Driver";
dbUrl = "jdbc:mysql://server2003:3306/[database]";
Class.forName(driverName);
conn = DriverManager.getConnection(dbUrl,"[bruger]","[adgangskode]");

det andet virker fint, men det er efterhånden mange år siden at
MySQL overtog MM driveren - og brugernavn/password i URL er en MySQL
specifik feature
Avatar billede schwarz84 Nybegynder
14. november 2005 - 20:21 #3
Du skal lige have JDBC-filen herfra for at den virker:
http://dev.mysql.com/downloads/connector/j/3.1.html
Avatar billede bentblod Nybegynder
14. november 2005 - 20:26 #4
og jeg gætter så på at i sætninge:
jdbc:mysql://server2003:3306/[datanbase]?user=[bruger]&password=[adgangskode]";
der skal man selv indsætte ting i [] uden [] ikk? Og hvis du nu skulle lave en eller anden metode med sql.. Kan du ikke også lige lave et eksempel på det? bare så jeg er sikker på at jeg har det rigtigt da jeg ikke har noget at teste på her ^^
Avatar billede bentblod Nybegynder
14. november 2005 - 20:27 #5
okok takker ^^ så ikke lige de andre havde skrevet ^^
Avatar billede schwarz84 Nybegynder
14. november 2005 - 20:33 #6
Du kan se hvordan det fungerer nærmere i Javas Api. Det drejer sig om pakken javax.sql.
Mht [] så ja.
Du kan lave noget sql ved at få et Statement objekt fra klassen. Her bruger du metoden executeStatement som tager noget SQL som argument. Her får du et Resultset som du kan arbejde på. Se API'en for detaljerne...
Avatar billede Slettet bruger
14. november 2005 - 20:39 #7
Jeg kan godt ligge et lille eks. her.

    public boolean find(long lookFor) {
        boolean rc = false;
        try {
            Statement stmt = DBAccess.getInstance().getStmt();
            String qry =
                "SELECT * FROM wincar.cars WHERE recordid =" + lookFor;
            ResultSet rs = stmt.executeQuery(qry);

            if (rs.next()) {
                isNew = false;
                rc = true;
                setRecordId(rs.getLong("recordid"));
                setBody(rs.getString("body"));
                setCarType(rs.getString("cartype"));
                setEquipment(rs.getString("equipment"));
                setHeadline(rs.getString("headline"));
                setKm(rs.getString("km"));
                setPrice(rs.getString("price"));
                setRecordId(rs.getLong("recordid"));
                setStand(rs.getString("stand"));
                setYear(rs.getString("year"));
                setTeaser(rs.getString("teaser"));
            }

            stmt.close();
            rs.close();
           
        } catch (Exception e) {
            DBAccess.close();
            find(lookFor);
            e.printStackTrace();
        }

        return rc;

    }
Avatar billede Slettet bruger
14. november 2005 - 20:40 #8
Du har nok ret Arne, men gammel vane du ved :-)
Og eftersom jeg bruger Hibernate nu så er det jo ikke så aktuelt mere
Avatar billede bentblod Nybegynder
14. november 2005 - 20:41 #9
Ok jeg vil lige teste det lidt så. skriv lige som svar, så skriver jo nok senere når jeg har fundet ud af det ^^
Avatar billede Slettet bruger
14. november 2005 - 20:43 #10
ok, ellers bare spørg løs :-)
Avatar billede bentblod Nybegynder
14. november 2005 - 22:57 #11
driverName = "org.gjt.mm.mysql.Driver";
  driverName = "com.mysql.jdbc.Driver";

hvilken af disse 2 skal jeg bruge?
Avatar billede simonvalter Praktikant
15. november 2005 - 09:46 #12
com.mysql.jdbc.Driver for Connector/J 3.1
Avatar billede arne_v Ekspert
15. november 2005 - 09:54 #13
man bør bruge com.mysql.jdbc.Driver

men org.gjt.mm.mysql.Driver virker stadig af bagud kompabilitets hensyn
Avatar billede Slettet bruger
15. november 2005 - 10:12 #14
Jep, Arne har ret, brug com.mysql.jdbc.Driver, det er den officelle i dag.
Avatar billede bentblod Nybegynder
15. november 2005 - 14:37 #15
Ok, men den fil som en henviste til, er det noget man bare SKAL have installeret eller hvad er det egentlig?
Avatar billede arne_v Ekspert
15. november 2005 - 14:47 #16
http://dev.mysql.com/downloads/connector/j/3.1.html

er linket hvor kan hente JDBC driveren

ja - den er absolut nødvendig !
Avatar billede bentblod Nybegynder
17. november 2005 - 15:04 #17
Ok har testet lidt nu og synes ikke rigtigt det virker... Hvis det nu bare skulle være helt simpelt og jeg bare skulle have en metode som åbner forbindelsen og en der lukker forbindelsen, hvordan ville det så se ud?

Og ang. den fil der... Er det noget som skal installeres i JDBC eller bare sættes ind i java koden eller hvordan?
Avatar billede arne_v Ekspert
17. november 2005 - 15:06 #18
filen skal være i classpath
Avatar billede arne_v Ekspert
17. november 2005 - 15:07 #19
Connection con = DriverManager.getConnection(url,un.pw);
con.close();

connecter og disconneter
Avatar billede bentblod Nybegynder
17. november 2005 - 23:35 #20
Hey har lidt problemer med den connector der. Selvom jeg har sat classpath ind brokker den sig stadig over      Class.forName("com.mysql.jdbc.Driver").newInstance();

den siger:

java.lang.NoClassDefFoundError: org/aspectj/lang/Signature

    at java.lang.Class.forName0(Native Method)

    at java.lang.Class.forName(Class.java:141)

    at testmysql.DbAccess.openDb(DbAccess.java:11)

    at testmysql.Start.main(Start.java:6)

Exception in thread "main"

Hvad gør jeg ved det?
Avatar billede bentblod Nybegynder
17. november 2005 - 23:51 #21
public void openDb(){
    try {
      Class.forName("com.mysql.jdbc.Driver");
      /*Connection con = DriverManager.getConnection("jdbc:mysql://" + url + ":" +
                                                      port + "/" + database, user,
                                                      password);
    */}
    catch (Exception ex) {
    ex.printStackTrace();
    }
  }

sådan ser metoden ud som åbner databasen... hvad er der galt?
Avatar billede arne_v Ekspert
17. november 2005 - 23:54 #22
der er noget riv ruskende galt

den klasse der mangler er ikke en MySQL klasse men AspectJ klasse !
Avatar billede bentblod Nybegynder
17. november 2005 - 23:55 #23
ahh fandt ud af det -_- man skal IKKE bruge den i henviste til ^^ men versionen før den! Bare underligt... står dog at den er under udvikling men man burde da kunne bruge den... men so far virker det med 3.0.17
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