Подтвердить что ты не робот

Как заставить Java работать с SQL Server?

Я знаю, что это основной вопрос, но я не могу найти ответа, и я извиняюсь, если этот вопрос слишком глуп, но здесь мы идем:

Я должен работать с SQL Server (без проблем до сих пор) и с Java (love java, поэтому здесь не проблема), но теперь: Что я должен делать, чтобы комбинация работала? Я получил: JRE 1.6 и sqljdbc4.jar... Прежде чем я поместил sqljdbc4.jar в мой путь к классам, у меня был sqljdbc.jar в нем и с тестовой программой я получил это исключение:

21.08.2009 09:26:59 com.microsoft.sqlserver.jdbc.SQLServerConnection <init>
SCHWERWIEGEND: Die Java-Laufzeitumgebung (Java Runtime Environment, JRE), Version 1.6,
wird von diesem Treiber nicht unterstützt. Verwenden Sie die Klassenbibliothek 
'sqljdbc4.jar', die Unterstützung für JDBC 4.0 bietet.
java.lang.UnsupportedOperationException: Die Java-Laufzeitumgebung (Java Runtime 
Environment, JRE), Version 1.6, wird von diesem Treiber nicht unterstützt. Verwenden 
Sie die Klassenbibliothek 'sqljdbc4.jar', die Unterstützung für JDBC 4.0 bietet.
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.<init>(SQLServerConnection.java:223)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:840)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at msSqlTest.DB.dbConnect(DB.java:13)
    at msSqlTest.TestConnection.main(TestConnection.java:7)

Извините за немецкий... Это в основном означает, что я должен использовать sqljdbc4.jar, b/c JRE, который я использую, не поддерживается драйвером. Поэтому я поместил sqljdbc4.jar в свой путь к классам, но это не сработало, поэтому я потерял свою работу, что бы я мог сделать.

Может быть, кто-то может сказать, что я должен быть уверенным в том, что я должен делать: (

О да, вот тестовое приложение app:

import java.sql.*;

public class TestConnection{
    public static void main(String[] args){
        // Neue DB und los geht :)
        DB db = new DB();
        db.dbConnect("jdbc:sqlserver://localhost:1433/muff", "user", "pw" );
    }
}

class DB{
    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" );
        }
        catch( Exception e ){
            e.printStackTrace();
        }
    }
};
4b9b3361

Ответ 1

Вы пробовали драйвер jtds для SQLServer?

Ответ 2

Не ставьте как старый sqljdbc.jar, так и новый sqljdbc4.jar в свой путь к классам - это сделает (более или менее) непредсказуемым, какие классы используются, если оба этих JAR содержат классы с одинаковыми квалифицированными именами.

Вы сказали, что вы поместили sqljdbc4.jar в свой путь к классам - вы удалили старый sqljdbc.jar из пути к классам? Вы сказали, что "это не сработало", что это значит? Вы уверены, что у вас еще нет старого JAR в вашем пути к классам (возможно, не явно)?

Ответ 3

Драйвер, которым вы пользуетесь, является драйвером MS SQL Server 2008 (sqljdbc4.jar). Как указано на странице MSDN, для этого требуется Java 6+.

http://msdn.microsoft.com/en-us/library/ms378526.aspx

Для библиотеки классов

sqljdbc4.jar требуется Java Runtime Environment (JRE) версии 6.0 или новее.

Я бы предложил использовать драйвер 2005 года, в котором я верю (sqljdbc.jar), или как Oxbow_Lakes говорит, что попробовал драйвер jTDS (http://jtds.sourceforge.net/).

Ответ 4

Возможно, немного поздно, но использование разных драйверов в целом является излишним для случая ошибки пользователя:

db.dbConnect("jdbc:sqlserver://localhost:1433/muff", "user", "pw" );

должен быть либо одним из следующих:

db.dbConnect("jdbc:sqlserver://localhost\muff", "user", "pw" );

(используя именованный канал) или:

db.dbConnect("jdbc:sqlserver://localhost:1433", "user", "pw" );

напрямую используя номер порта; вы можете оставить 1433, потому что это порт по умолчанию, оставляя:

db.dbConnect("jdbc:sqlserver://localhost", "user", "pw" );

Ответ 5

Для всех, кто по-прежнему работает в Google, перейдите в \blackboard\config\tomcat\conf и в wrapper.conf поместите дополнительную строку в файл wrapper.java.classpath, указав на sqljdbc4.jar, а затем обновите wrapper.conf.bb как а

Затем перезапустите службы доски и tomcat, и она должна работать

Это не сработает, просто установив свой путь класса java, вы должны настроить его в конфигурационных файлах доски, чтобы указать на ваш файл jar с помощью библиотеки jdbc

Ответ 6

У меня была такая же проблема с клиентом моей компании, проблема заключалась в том, что драйвер sqljdbc4.jar, пытается преобразовать символ между базой данных и драйвером. Каждый раз, когда он выполнял запрос к базе данных, теперь вы можете одновременно представлять 650 подключений, это очень сильно заставило мою систему очень медленно, так как во избежание этой ситуации я добавляю в String соединения следующий параметр:

 SendStringParametersAsUnicode=false, then te connection must be something like url="jdbc:sqlserver://IP:PORT;DatabaseName=DBNAME;SendStringParametersAsUnicode=false"

После этого система очень быстрая, так как пользователи очень довольны изменением, я надеюсь, что мой вход будет таким же.

Ответ 7

Если вы используете sqljdbc4.jar, используйте следующий код

ResultSet objResultSet = objPreparedStatement.getResultSet();
if (objResultSet == null) {
  boolean bResult = false;
  while (!bResult){
    if (objPreparedStatement.getMoreResults()){
      objResultSet = objPreparedStatement.getResultSet();
      bResult = true;
    }
  } 
}
objCachedRowSet = new CachedRowSetImpl();
objCachedRowSet.populate(objResultSet);
if (CommonUtility.isValidObject(objResultSet)) objResultSet.close();
objResultSet = null;

Ответ 8

Действительно. Дело в том, что версия 2008 R2 очень сложная. В некоторых случаях драйвер JTDs работает. На определенном сервере jTDS отлично работала для экземпляра 2008 R2. На другом сервере, однако, мне пришлось использовать драйвер JBDC для SQL sqljdbc4.jar. Но тогда это будет работать только после установки среды JRE на 1.6 (или выше).

Я использовал 1,5 для другого сервера, поэтому я много времени на него накладывал.

Трудная проблема.