Avatar billede jespersahner Nybegynder
01. marts 2003 - 11:49 Der er 6 kommentarer og
1 løsning

import-statement (i NetBeans)

Jeg har et problem med at forstå, hvorfor flg. ikke virker:

import java.sql.*;

public class SAS_JDBC {

    public static void main(String[] args) throws Exception{
        Connection connection=null;
        Statement statement=null;
        try {
            Class.forName("com.sas.net.sharenet.ShareNetDriver").newInstance();
        } catch (Exception e) {
            System.out.println("Class not found");
        }
        try {
            connection=DriverManager.getConnection("jdbc:sharenet://localhost:5010",null);
            System.out.println("Connection made");
        } catch (SQLException sqlException) {
            System.out.println("Connect not made");
        }
        try {
            statement=connection.createStatement();
            boolean result=statement.execute("libname temp 'c:\'");
        } catch (SQLException e) {
            System.out.println("Exception thrown: " + e.getMessage());
        }
    }
   
}

Jeg får besked om, at "connection=DriverManager.getConnection" ikke kan "resolves", idet DriverManager ikke kendes, men tilføjer jeg linien
import java.sql.DriverManager;
- i tillæg til
import java.sql.*;
- så virker det.

Det burde vel være nok at have linien
import java.sql.*;
- ???

Jeg anvender NetBeans 3.4
Avatar billede soreno Praktikant
01. marts 2003 - 11:51 #1
Jeg kan godt kompilerer ovenstående (med eneste import = java.sql.*).
Avatar billede arne_v Ekspert
01. marts 2003 - 12:03 #2
Koden compiler fint med NetBeans 3.4.1 !

PS: Jeg tror du mangler en backslash i "libname temp 'c:\'".
Avatar billede jespersahner Nybegynder
01. marts 2003 - 12:36 #3
arne v> Det mener jeg ikke jeg gør, men fejlen optræder vel også tidligere i koden så at sige. Tror lige jeg vil opgradere til 3.4.1, selv om det ikke burde betyde noget. Jeg kompilerer fint med JCreator, som jeg bruger, når det skal gå hurtigt.
Avatar billede arne_v Ekspert
01. marts 2003 - 12:50 #4
Det har ikke noget med compile problemet at gøre.

Men hvis du kører følgende lille program:

public class Test {
  public static void main(String[] args) {
      System.out.println("libname temp 'c:\'");
      System.out.println("libname temp 'c:\\'");
  }
}

så få du:

libname temp 'c:'
libname temp 'c:\'

og jeg gik ud fra at der var de sidste du ville have.
Avatar billede jespersahner Nybegynder
01. marts 2003 - 14:56 #5
Jeg skylder lidt en undskyldning for min dumhed her. Jeg havde på et tidligere tidspunkt i anden sammenhæng tilfældigvis fået oprettet eller kopieret fra andetsteds en klasse nøjagtig med navnet "DriverManager" men med en anden funktionalitet. Derfor vil Java selvfølgelig bruge denne udgave før DriverManager i java.sql.* :-)

Men det sjove er jo så, at når jeg skriver
import java.sql.DriverManager;
- vil denne åbenbart have højere prioritet end den "forstyrrende" udgave af "DriverManager".
Avatar billede arne_v Ekspert
01. marts 2003 - 16:14 #6
Ah - det forklarer jo sagen.

Hvis man nærlæser sektion 7.5.1 og 7.5.2 af Java Language Spec, så
står der tydeligt at prioriteten er:

1)  klasser eksplicit importeret
2)  klasser i samme pakke
3)  klasser implicit importeret med *
Avatar billede jespersahner Nybegynder
29. november 2004 - 08:21 #7
Lukker spm.
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