Как я могу использовать драйвер 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', вам не нужно указывать имя пользователя и пароль.
Надеюсь, что это поможет.