Как я могу использовать драйвер MS JDBC с MS SQL Server 2008 Express?

Моя конфигурация:

  • Windows XP SP3
  • JDBC 2005
  • MS SQL Server 2008 Express, открытый через tcp/ip на порту 1433
  • sqljdbc.jar в пути класса

Я пробовал:

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();
}

Но он всегда выдает исключение:

java.sql.SQLException: No suitable driver

Я также пробовал следующие URL:

localhost:1433/SQLEXPRESS2008

localhost/SQLEXPRESS2008

localhost

Те же результаты. Любая помощь?

Ответы

Ответ 1

У вас неправильный URL.

Я не знаю, что вы подразумеваете под "JDBC 2005". Когда я посмотрел сайт microsoft, я нашел что-то, называемое Microsoft SQL Server JDBC Driver 2.0. Вы захотите этого - он включает в себя множество исправлений и некоторые улучшенные улучшения. [edit: вам, вероятно, понадобится последний драйвер. По состоянию на март 2012 года последним драйвером JDBC от Microsoft является JDBC 4.0]

Проверьте примечания к выпуску. Для этого драйвера вы хотите:

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

Кажется, у вас есть имя класса правильно, но URL-адрес неправильный.

Microsoft изменила имя класса и URL-адрес после его первоначальной версии драйвера JDBC. Используемый вами URL-адрес идет с исходным драйвером JDBC от Microsoft, причем одна MS вызывает "версию SQL Server 2000". Но этот драйвер использует другое имя класса.

Для всех последующих драйверов URL-адрес изменился на форму, которую я здесь.

Это в примечаниях к выпуску для драйвера JDBC.

Ответ 2

Если ваше значение databaseName верное, используйте это: DriverManger.getconnection("jdbc:sqlserver://ServerIp:1433;user=myuser;password=mypassword;databaseName=databaseName;")

Ответ 3

  • Загрузите последний драйвер JDBC (т.е. sqljdbc4.0) с веб-сайта Microsoft.
  • Запишите программу следующим образом:

    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();
        } 
    }
    
  • Скомпилируйте программу и установите путь к jar classpath: set classpath=C:\jdbc\sqljdbc4.jar;.; Если вы сохранили файл jar в C:\jdbc после загрузки и извлечения.

  • Запустите программу и убедитесь, что ваша служба TCP/IP включена. Если это не разрешено, выполните следующие действия:
    • Перейти в Пуск → Все программы → Microsoft SQL Server 2008 → Инструменты настройки → Диспетчер конфигурации SQL Server
    • Разверните Sql Server Network Configuration: выберите экземпляр MS SQL Server, а именно: MSQSLSERVER и включить TCP/IP.
    • Перезапустите экземпляр MS SQL Server. Это можно сделать также из меню правой кнопки мыши Microsoft SQL Server Management Studio на корневом уровне вашего экземпляра сервера MS SQL.

Ответ 4

Последний драйвер подключения JDBC MSSQL можно найти на   JDBC 4.0

Файл класса должен находиться в пути к классам. Если вы используете eclipse, вы можете легко сделать то же самое, выполнив следующее →

Щелкните правой кнопкой мыши имя проекта → Свойства → путь сборки Java → Библиотеки → Добавить внешние банки

Также, как уже указывал @Cheeso, правильным способом доступа является jdbc: sqlserver://server: port; DatabaseName = dbname

Между тем, пожалуйста, найдите образец класса для доступа к базе данных MSSQL (2008 в моем случае).

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");
   }
}

Надеюсь, что это поможет.

Ответ 5

Именованные экземпляры?

URL: jdbc: sqlserver://[имя_сервера] [\ instanceName] [: portNumber] [; property = value]

Примечание: обратная косая черта

Ответ 6

Вы можете попробовать следующее. Хорошо работает в моем случае:

  • Загрузите текущий драйвер JTDS jTDS
  • Поместите jtds-x.x.x.jar в свой путь к классам.
  • Скопируйте файл ntlmauth.dll в windows/system32. Выберите dll на основе вашего оборудования x86, x64...
  • URL-адрес соединения: 'jdbc: jtds: sqlserver://localhost: 1433/YourDB', вам не нужно указывать имя пользователя и пароль.

Надеюсь, что это поможет.