Avatar billede bgo Nybegynder
05. juni 2004 - 16:37 Der er 6 kommentarer og
1 løsning

Når det er en ODBC-kilde, er den fysiske database ligegyldigt?

Jeg er ved at forberede mig til en eksamen, og vil lige sikre mig, at jeg har forstået tingene korrekt.

Jeg har oprettet en ODBC-datakilde under navnet "udlånsdb". Og i mit program har jeg:

private static final String url = "jdbc:odbc:udlånsdb";
  private static final String username = "anonymous";
  private static final String password = "guest";
  private static Connection connection;

  private static void createConnection(){

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

        connection = DriverManager.getConnection(
            url, username, password );
      }
      catch ( ClassNotFoundException cnfex ) {
        System.err.println(
            "Kunne ikke åbne JDBC/ODBC driver." );
        cnfex.printStackTrace();
        System.exit( 1 );
      }
      catch ( SQLException sqlex ) {
        System.err.println( "Kunne ikke skabe forbindelse til databasen" );
        sqlex.printStackTrace();
      }

  }

Hvis jeg har forstået tingene korrekt, så skulle det være ligegyldigt om den fysiske database der ligger bag navnet "udlånsdb" i ODBC, er Access, MS SQL, MySQL eller noget helt andet, bare det er oprettet som ODBC-datakilde under dette navn.

Har jeg forstået dette korrekt?

Nåja, er det korrekt at mange databaser udover Access har en autonummer-felttype?
Avatar billede arne_v Ekspert
05. juni 2004 - 16:40 #1
Korrekt. Under forudsætning af at de SQL sætninger du bruger ikke er Access specifikke !

Ja - langt de fleste databaser har en måde at autogenerere id'er på. De er
imidlertid ikke helt kompatible.
Avatar billede bgo Nybegynder
05. juni 2004 - 16:40 #2
åhh ja, og ODBC tilbydes kun på Windows, korrekt?
Avatar billede arne_v Ekspert
05. juni 2004 - 16:42 #3
ODBC er grundliggende en Windows teknologi.

Der er faktisk lavet ODBC (i form af ODBC C API'et) til Linux og diverse Unix'er m.v..

Men:
  - de er ikke særligt udbredte
  - jeg tvivler på at Java understøtter dem
Avatar billede bgo Nybegynder
05. juni 2004 - 16:42 #4
arne_v:

hmm. vil denne inkompatibilitet så have indflydelse på

ResultSet rs = statement.executeQuery("SELECT @@IDENTITY");
            while(rs.next()) {
                brugerID=rs.getInt(1);
            }

??
Avatar billede arne_v Ekspert
05. juni 2004 - 16:44 #5
Ja

I MySQL er det f.eks.:

SELECT LAST_INSERT_ID()
Avatar billede bgo Nybegynder
05. juni 2004 - 16:45 #6
ahaa, ok :) Tak igen for din hjælp :)
Avatar billede arne_v Ekspert
05. juni 2004 - 16:46 #7
Lige netop det specifikke problem kan man kode sig uden om hvis ens driver er
JDBC 3.0 compliant ved at bruge stmt.getGeneratedKeys() til at finde dem med.
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Lead DevSecOps

SOS International

License & Vendor Manager

Unik System Design A/S

QA Engineer