Avatar billede voetmann Nybegynder
28. november 2002 - 14:31 Der er 9 kommentarer og
1 løsning

tilgang til mysql db fra java med ODBC

Er der nogen der kan forklare mig hvad der er galt med denne forstår det ikke - så hvis der en en venlig og rar sjæl der vil have 200 point så please help:

import java.net.URL;
import java.sql.*;
import java.util.*;

interface DbInterface{
  static final String  driver = "jdbc:odbc:";
  static final String  databasenavn = "auktion";
  static final String  brugernavn = "default";
  static final String password = "user";
 
/*public void findAlle(AbstractList list);
  public Object findId(int id);
  public boolean exists(int id);
  public int insert(Object e);
  public int update(Object e);
  public int delete(Object e);*/
 

 
  //statisk inner class
  class DbAdgang{
    DatabaseMetaData dma;
    static Connection con;
    public DbAdgang(){
        this(driver, brugernavn, password);
    }
    public DbAdgang(String odbcdrv,String bruger, String passwd)
      { String url = odbcdrv + databasenavn + ";";
        try{
            //load af driver
           
              Class.forName("MySQL ODBC 3.51 Driver");
           
        }
        catch(Exception e){
            System.out.println("Kan ikke lokalisere driver");
            System.out.println(e.getMessage());
        }
        try{
          //forbindelse til databasen
              con = DriverManager.getConnection(url, bruger, passwd);
            dma = con.getMetaData(); //få fat i meta data
            System.out.println("Forbindelse til " + dma.getURL());
            System.out.println("Driver " + dma.getDriverName());
        }//slut try
        catch(Exception e){
            System.out.println("Problemer med forbindelse til databasen");
            System.out.println(e.getMessage());
        }//slut catch
      }
      public void closeDb(){
      try{
          con.close();
      }
      catch (Exception e){
          System.out.println("Fejl ved lukning " +  e.getMessage());
      }   
      }
      public static Connection getDBcon(){
          return con;
      }
    }
}
Avatar billede bearhugx Nybegynder
28. november 2002 - 14:36 #1
Hvilken fejl får du ???
Avatar billede bearhugx Nybegynder
28. november 2002 - 14:37 #2
selv synes jeg at følgende er mistænkeligt :

  Class.forName("MySQL ODBC 3.51 Driver");

Jeg er vant til at man refferer til en klasse vhja. package og klassenavn ...
Avatar billede voetmann Nybegynder
28. november 2002 - 14:45 #3
nullpointer exception
Avatar billede di8leva Nybegynder
28. november 2002 - 14:50 #4
hvor får du nullpointerexception?
Avatar billede voetmann Nybegynder
28. november 2002 - 14:51 #5
ha rodet lidt mere med det, virker så langt at det nu kun er formatet på driver vi mangler
Avatar billede arne_v Ekspert
28. november 2002 - 15:55 #6
Jeg er ikke den stor MySQL ørn.

Men prøve med:
  jdbc:mysql://server-navn/database-navn
f.eks.:
  jdbc:mysql://localhost/test
Avatar billede olly Nybegynder
28. november 2002 - 18:29 #7
Brug dog en JDBC driver fra mysql.com. Hvorfor bruge ODBC´?
Avatar billede olly Nybegynder
28. november 2002 - 18:32 #8
-------------
20.1.1 JDBC-ODBC-broen under Windows
Med Java under Windows følger en standard JDBC-ODBC-bro med, så man kan kontakte alle datakilder defineret under ODBC. Denne driver indlæses med:

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Når forbindelsen oprettes, angiver man den ønskede datakildes navn. Husk, at datakildens navn (her "datakilde1") først skal være defineret i Windows' Kontrolpanel under ODBC:

  Connection forb = DriverManager.getConnection("jdbc:odbc:datakilde1");
Bemærk, at ODBC er en ret langsom protokol. Har du brug for bedre ydelse bør du finde en driver, der kommunikerer direkte med databasen, i stedet for at bruge JDBC-ODBC.
------------
Taget fra: http://javabog.dk/OOP/kapitel20.html
Avatar billede olly Nybegynder
28. november 2002 - 18:46 #9
Den her virker hos mig

-----------------------------

import java.net.URL;
import java.sql.*;
import java.util.*;

interface DbInterface{
  static final String  driver = "jdbc:odbc:";
  static final String  databasenavn = "auktion";
  static final String  brugernavn = "default";
  static final String password = "user";
 
/*public void findAlle(AbstractList list);
  public Object findId(int id);
  public boolean exists(int id);
  public int insert(Object e);
  public int update(Object e);
  public int delete(Object e);*/
  import java.net.URL;

class DBAdgang{
    DatabaseMetaData dma;
    static Connection con;

    public DBAdgang(){
        this(driver, brugernavn , password);
    }
    public DBAdgang(String odbcdrv,String bruger, String passwd)
      { String url = odbcdrv + databasenavn + ";";
        try{
            //load af driver

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

        }
        catch(Exception e){
            System.out.println("Kan ikke lokalisere driver");
            System.out.println(e.getMessage());
        }
        try{
          //forbindelse til databasen
              con = DriverManager.getConnection(url, bruger, passwd);
            dma = con.getMetaData(); //få fat i meta data
            System.out.println("Forbindelse til " + dma.getURL());
            System.out.println("Driver " + dma.getDriverName());
        }//slut try
        catch(Exception e){
            System.out.println("Problemer med forbindelse til databasen");
            System.out.println(e.getMessage());
        }//slut catch
      }
      public void closeDb(){
      try{
          con.close();
      }
      catch (Exception e){
          System.out.println("Fejl ved lukning " +  e.getMessage());
      }
      }
      public static Connection getDBcon(){
          return con;
      }
        public static void main(String args[])
        {
            DBAdgang a = new DBAdgang();
        }
    }
Avatar billede olly Nybegynder
29. november 2002 - 17:13 #10
Hmmm... Jeg mener jeg svare på spørgsmålet da du spørger efter kode til ODBC adgang? Du får svaret og den du så giver point giver dig et hint til JDBC??? Lugter!
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