2009-02-12 16 views
13

Moja konfiguracja:Jak mogę użyć sterownika MS JDBC z MS SQL Server 2008 Express?

  • okna XP SP3
  • JDBC 2005
  • MS SQL Server 2008 Express, wystawiony przez TCP/IP na porcie 1433
  • sqljdbc.jar w ścieżce klasy

Próbowałem:

try { 
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); 
    con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433/SQLEXPRESS2008;databaseName=Test;selectMethod=cursor", "sa", ""); 
} 
catch (Exception e) { 
    e.printStackTrace(); 
} 

Ale zawsze zgłasza wyjątek:

java.sql.SQLException: No suitable driver 

Próbowałem również następujące adresy URL:

localhost:1433/SQLEXPRESS2008 

localhost/SQLEXPRESS2008 

localhost 

same wyniki. Każda pomoc?

Odpowiedz

27

Masz zły adres URL.

Nie wiem, co masz na myśli przez "JDBC 2005". Kiedy spojrzałem na stronę Microsoftu, znalazłem coś o nazwie Microsoft SQL Server JDBC Driver 2.0. Będziesz chciał tego - zawiera wiele poprawek i ulepszeń. [edytuj: prawdopodobnie będziesz chciał najnowszego sterownika. Od marca 2012 r. Najnowszy sterownik JDBC firmy Microsoft to JDBC 4.0]

Sprawdź informacje o wersji. W przypadku tego sterownika:

URL: jdbc:sqlserver://server:port;DatabaseName=dbname 
Class name: com.microsoft.sqlserver.jdbc.SQLServerDriver 

Wygląda na to, że nazwa klasy jest poprawna, ale adres URL jest nieprawidłowy.

Firma Microsoft zmieniła nazwę klasy i adres URL po pierwszym wydaniu sterownika JDBC. Adres URL, którego używasz, jest zgodny z oryginalnym sterownikiem JDBC firmy Microsoft, który MS nazywa "wersją programu SQL Server 2000". Ale ten sterownik używa innej nazwy klasy.

Dla wszystkich kolejnych sterowników adres URL został zmieniony na formularz, który tutaj mam.

Jest to w uwagach do wydania dla sterownika JDBC.

+5

Wygląda na to, że dostępny jest teraz sterownik v3.0 (zgodny z JDBC 4.0) http://msdn.microsoft.com/en-us/sqlserver/aa937724 – Nemi

+1

Tak, informacje w tej odpowiedzi są teraz nieaktualne. Radziłbym programistom, aby odwiedzili witrynę MS i otrzymali najnowszy sterownik.Przeczytaj także informacje o wersji, aby zweryfikować nazwę klasy i adres URL. W tej chwili są one niezmienione, ale warto je sprawdzić. – Cheeso

+1

Od marca 2012 r. Najnowszy sterownik JDBC wydany przez firmę Microsoft to v4.0: http://www.microsoft.com/en-us/download/details.aspx?id=11774 – Cheeso

-2

Możesz wypróbować następujące rzeczy. Działa dobrze w moim przypadku:

  1. pobierania prądu jTDS JDBC Driver
  2. Put jtds-x.x.x.jar w ścieżce klas.
  3. Skopiuj plik ntlmauth.dll do systemu windows/system32. Wybierz bibliotekę dll na podstawie sprzętu x86, x64 ...
  4. Adres URL połączenia: 'jdbc: jtds: sqlserver: // localhost: 1433/YourDB', nie musisz podawać nazwy użytkownika i hasła.

Nadzieję, że pomaga.

+2

Pytają jak użyć sterownika MS , a nie sterownik JTDS. Przepraszam (-1) – javamonkey79

+0

Pytanie nie jest jasne, że musi używać sterownika MS. Może pytający nie znał jTDS. Ogólnie rzecz biorąc, jTDS działa lepiej, więc może nie jest rozwiązaniem bezpośrednim, ale dobrą alternatywą. – Adrian

+0

Dziękuję za zaniechanie siedmioletniej odpowiedzi. Jesteście mistrzami. – raupach

3

Jeśli wartość databaseName jest poprawna, a następnie użyj tego: DriverManger.getconnection("jdbc:sqlserver://ServerIp:1433;user=myuser;password=mypassword;databaseName=databaseName;")

+1

Dodanie tego 'microsoft:' daje mi : 'java.sql.SQLException: Nie znaleziono odpowiedniego sterownika dla jdbc: microsoft: sqlserver: // ...' – Baumann

+0

@Baumann Dzięki za wskazanie. Zaktualizuje odpowiedź – Mritunjay

0

Najnowszy sterownik JDBC MSSQL połączeń można znaleźć na JDBC 4.0

Plik klasa powinna być w ścieżce klasy. Jeśli używasz zaćmienie można łatwo zrobić to samo, wykonując następujące czynności ->

kliknij prawym przyciskiem myszy nazwę projektu -> Właściwości -> Konstruowanie Java Path -> Biblioteki -> Dodaj Słoiki zewnętrzne

również jak już zostało wskazane przez @Cheeso poprawny sposób dostępu jest jdbc: sqlserver: // server: port; NazwaBazyDanych = nazwa_bd

Tymczasem proszę odnaleźć klasę przykładowy dostępu dB (MSSQL 2008 roku mój przypadek).

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 

public class ConnectMSSQLServer 
{ 
    public void dbConnect(String db_connect_string, 
      String db_userid, 
      String db_password) 
    { 
     try { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     Connection conn = DriverManager.getConnection(db_connect_string, 
        db_userid, db_password); 
     System.out.println("connected"); 
     Statement statement = conn.createStatement(); 
     String queryString = "select * from SampleTable"; 
     ResultSet rs = statement.executeQuery(queryString); 
     while (rs.next()) { 
      System.out.println(rs.getString(1)); 
     } 
     conn.close(); 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) 
    { 
     ConnectMSSQLServer connServer = new ConnectMSSQLServer(); 
     connServer.dbConnect("jdbc:sqlserver://xx.xx.xx.xxxx:1433;databaseName=MyDBName", "DB_USER","DB_PASSWORD"); 
    } 
} 

Mam nadzieję, że to pomoże.

3
  1. pobrać najnowszy sterownik JDBC (tj sqljdbc4.0) ze strony internetowej Microsoftu
  2. napisać program w następujący sposób:

    import java.sql.*; 
    class testmssql 
    { 
        public static void main(String args[]) throws Exception 
        { 
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
         Connection  con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433; 
           databaseName=chapter16","sa","123");//repalce your databse name and user name 
          Statement st=con.createStatement(); 
         ResultSet rs=st.executeQuery("Select * from login");//replace your table name 
         while(rs.next()) 
         { 
          String s1=rs.getString(1); 
          String s2=rs.getString(2); 
          System.out.println("UserID:"+s1+"Password:"+s2); 
         } 
         con.close(); 
        } 
    } 
    
  3. kompilacji programu i ustawić mianowicie jar classpath: set classpath=C:\jdbc\sqljdbc4.jar;.; Jeśli zapisałeś swój plik jar w C:\jdbc po pobraniu i wyodrębnieniu.

  4. Uruchom program i upewnij się, że jest włączona usługa TCP/IP. Jeśli nie jest włączone, a następnie wykonaj następujące kroki:
    1. Przejdź do Start -> Wszystkie Programy -> Microsoft SQL Server 2008 - narzędzia> Konfiguracja -> Konfiguracja serwera SQL Manager
    2. Rozwiń Sql Server Configuration Network: Wybierz MS SQL Server Instance aiz. MSQSLSERVER i włącz TCP/IP.
    3. Zrestartuj instancję MS SQL Server. Można to zrobić także z menu po prawej stronie kliknij Microsoft SQL Server Management Studio na poziomie głównym swojego MS SQL Server przykład
0

nazwanych wystąpień?

URL: jdbc: sqlserver: // [nazwa serwera] [\ instanceName] [: portNumber] [; właściwość = wartość]

Uwaga: tył slash

Powiązane problemy