Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Windows [игнор отключен] [закрыт для гостей] / JDBC:ODBC Invalid string or buffer length / 6 сообщений из 6, страница 1 из 1
03.04.2014, 17:51
    #38604631
Шведков Артем
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC:ODBC Invalid string or buffer length
Всем привет.

Подскажите, плиз, насчет этой баги(?) на 64битной win server.
Пытаюсь подключиться с 6ой явы к MSSQL через JDBC:ODBC bridge, выдает ошибку

SQL Exception:
State : S1090
Message: [Microsoft][ODBC Driver Manager] Invalid string or buffer length
Error : 0

Задача - подключаться из Essbase к MSSQL и выполнять некоторые запросы, с помощью кастомной ява функции..

Подключаюсь следующим образом:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
 import java.util.*;
import java.io.*;
import java.sql.* ;

public class JDBCQuery
{

//public static void main(com.hyperion.essbase.calculator.Context ctx, String[] args) {
//runQuery(args);
//  }
    
  public static void main(String[] args) {
    runQuery(args);
  }
    
  public static void runQuery(String[] args) {
    int n = args.length;
    String strDSN = args[0];
    String strUser = args[1];
    String strPassword = args[2];
    String strQuery = args[3];

    for (int i=4; i < n ; i++) {
      strQuery = strQuery + " " + args[i];
    }

    try {
      // Load the database driver
      Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ) ;

      Properties connectionProps = new Properties();
      connectionProps.put("user", strUser);
      connectionProps.put("password", strPassword);      // Print all warnings

      // Get a connection to the database
      Connection conn = DriverManager.getConnection( "jdbc:odbc:" + strDSN, connectionProps) ;

      for( SQLWarning warn = conn.getWarnings(); warn != null; warn = warn.getNextWarning() ) {
        System.out.println( "SQL Warning:" ) ;
        System.out.println( "State  : " + warn.getSQLState()  ) ;
        System.out.println( "Message: " + warn.getMessage()   ) ;
        System.out.println( "Error  : " + warn.getErrorCode() ) ;
      }

      // Get a statement from the connection
      Statement stmt = conn.createStatement() ;

      // Execute the query
      ResultSet rs = stmt.executeQuery( strQuery ) ;

      // Loop through the result set
      while( rs.next() )
         System.out.println( rs.getString(1) ) ;

      // Close the result set, statement and the connection
      rs.close() ;
      stmt.close() ;
      conn.close() ;
    }
    catch( SQLException se ) {
      System.out.println( "SQL Exception:" ) ;

      // Loop through the SQL Exceptions
      while( se != null ) {
        System.out.println( "State  : " + se.getSQLState()  ) ;
        System.out.println( "Message: " + se.getMessage()   ) ;
        System.out.println( "Error  : " + se.getErrorCode() ) ;

        se = se.getNextException() ;
      }
    }
    catch( Exception e ) {
      System.out.println( e ) ;
    }
  }

  }  



В инете нашел множество описаний подобной проблемы, но внятного ответа так и не нашел. Кто что подскажет на эту тему ? Буду оч признателен.

Артем.
...
Рейтинг: 0 / 0
03.04.2014, 19:03
    #38604734
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC:ODBC Invalid string or buffer length
Х.з. С данной ошибкой не сталкивался.

А родной MS JDBC драйвер не подходить? Что бы JDBC-ODBC bridge не использовать?
...
Рейтинг: 0 / 0
07.04.2014, 23:00
    #38607755
Шведков Артем
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC:ODBC Invalid string or buffer length
Leonid Kudryavtsev,

тут возникает другая проблема, я не знаю Java, чтобы переписать используемые методы.. если я конечно все правильно понял)
скачал драйвер sqljdbc4 для JRE 6ой версии и пока на этом остановился.

з.ы. мотороллер java код не мой)
...
Рейтинг: 0 / 0
08.04.2014, 13:48
    #38608445
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC:ODBC Invalid string or buffer length
В документации на драйвер указано, что пишется вместо "odbc" во фрагменте "jdbc:odbc".
...
Рейтинг: 0 / 0
08.04.2014, 18:15
    #38608917
Шведков Артем
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC:ODBC Invalid string or buffer length
да, спасибо, все получилось.

Только теперь с кодировкой что-то, при обработке событий выдает мессагу с иероглифами.

SQL Exception:
State : null
Message: ╚эёЄЁєъЎш  эх тхЁэєыр Ёхчєы№ЄшЁє■∙шщ эрсюЁ.
...
Рейтинг: 0 / 0
08.04.2014, 20:48
    #38609014
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC:ODBC Invalid string or buffer length
"chcp 1251" в консоли, где запускаете ваше (консольное) приложение.
...
Рейтинг: 0 / 0
Форумы / Windows [игнор отключен] [закрыт для гостей] / JDBC:ODBC Invalid string or buffer length / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]