powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC + ODBC + MSSQL2000
20 сообщений из 20, страница 1 из 1
JDBC + ODBC + MSSQL2000
    #32846922
mahorkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли использовать JDBC-ODBC драйвер постовляемый в коплекте с jdk1.4.1_03-b02? Или надо сразу его апгрейдить?

Спрашиваю, потому что лезут какие-то странные баги. Например, не могу считать значения из некоторых колонок в одной таблице (получаю "[Microsoft][ODBC Driver Manager] Invalid descriptor index
"). Может конечно и сам виноват, но пока проблем не вижу.
Примечание: Значения из колонок считываю в том же порядке, в которов они упомянуты в SELECTе.
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32847271
Фотография syncat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай код
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32847309
Naug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня была такая бодяга- поищи по форуму, но суть была в том что не сходились типы данных в базе и методы которыми я оперировал в яве.
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32847426
big_mammoth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может не париться с ним и использовать родной без всяких там ODBC?
SQL Server 2000 Driver for JDBC Service Pack 3
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32847456
Фотография syncat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он много чего не умеет и глючный (сам удивился когда узнал), лучше использовать JTDS
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32847471
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
началось...

самый лучший - JSQLConnect http://www.jnetdirect.com

--
Lacrima Mosa Est
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32847852
mahorkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
syncatДавай код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
String query = "SELECT COL FROM TABLE1 WHERE col1 IS NOT NULL";
 try  {
   Statement s = c.createStatement();
   ResultSet rs = s.executeQuery (query);
    while  (rs.next()) {
    int  c1 = rs.getInt("COL1");
}  catch  (SQLException e1) {
   Msg.showError(e1.getMessage());
}
Валится на getInt. Если col1 заменить на col2, то всё работает. Обе клонки типа int в бд.

Проблема в том, что необходимо обеспечить возможность работы приложения с разными БД (MSSQL, Oracle, DB2, Sybase). Если использовать родные драйверы боюсь, что прийдётся в коде в некоторых местах поддерживать по отдельной ветке для каждого сервера.
Просто через ODBC этот же запроc естественно работает. Так что похоже проблема в JDBC-ODBC мосте. Его можно как-то заапгрейдить?
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32847870
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mahorkin syncatДавай код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
String query = "SELECT COL FROM TABLE1 WHERE col1 IS NOT NULL";
 try  {
   Statement s = c.createStatement();
   ResultSet rs = s.executeQuery (query);
    while  (rs.next()) {
    int  c1 = rs.getInt("COL1");
}  catch  (SQLException e1) {
   Msg.showError(e1.getMessage());
}
Валится на getInt. Если col1 заменить на col2, то всё работает. Обе клонки типа int в бд.

Проблема в том, что необходимо обеспечить возможность работы приложения с разными БД (MSSQL, Oracle, DB2, Sybase). Если использовать родные драйверы боюсь, что прийдётся в коде в некоторых местах поддерживать по отдельной ветке для каждого сервера.
Просто через ODBC этот же запроc естественно работает. Так что похоже проблема в JDBC-ODBC мосте. Его можно как-то заапгрейдить?

запрос который ты привел и получение полей из него, работать не будет.
в результате запроса получаешь один столбец с именем COL, а строкой
int c1 = rs.getInt("COL1"); пытаешься забрать значение поля, которого
в результате нет.
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32847875
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
результат - приводи тот код, который не работает. или меняй названия
полей синхронно :)

--
Lacrima Mosa Est
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32847894
mahorkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ mahorkin syncatДавай код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
String query = "SELECT COL FROM TABLE1 WHERE col1 IS NOT NULL";
 try  {
   Statement s = c.createStatement();
   ResultSet rs = s.executeQuery (query);
    while  (rs.next()) {
    int  c1 = rs.getInt("COL1");
}  catch  (SQLException e1) {
   Msg.showError(e1.getMessage());
}
Валится на getInt. Если col1 заменить на col2, то всё работает. Обе клонки типа int в бд.

Проблема в том, что необходимо обеспечить возможность работы приложения с разными БД (MSSQL, Oracle, DB2, Sybase). Если использовать родные драйверы боюсь, что прийдётся в коде в некоторых местах поддерживать по отдельной ветке для каждого сервера.
Просто через ODBC этот же запроc естественно работает. Так что похоже проблема в JDBC-ODBC мосте. Его можно как-то заапгрейдить?

запрос который ты привел и получение полей из него, работать не будет.
в результате запроса получаешь один столбец с именем COL, а строкой
int c1 = rs.getInt("COL1"); пытаешься забрать значение поля, которого
в результате нет.

Sorry, очепятка :). Именна колонок у меня совпадают. Просто я заменяя своё название таблицы и колонок на table1 и col1 опечатался.
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32847918
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mahorkin А.Грасоff™ mahorkin syncatДавай код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
String query = "SELECT COL FROM TABLE1 WHERE col1 IS NOT NULL";
 try  {
   Statement s = c.createStatement();
   ResultSet rs = s.executeQuery (query);
    while  (rs.next()) {
    int  c1 = rs.getInt("COL1");
}  catch  (SQLException e1) {
   Msg.showError(e1.getMessage());
}
Валится на getInt. Если col1 заменить на col2, то всё работает. Обе клонки типа int в бд.

Проблема в том, что необходимо обеспечить возможность работы приложения с разными БД (MSSQL, Oracle, DB2, Sybase). Если использовать родные драйверы боюсь, что прийдётся в коде в некоторых местах поддерживать по отдельной ветке для каждого сервера.
Просто через ODBC этот же запроc естественно работает. Так что похоже проблема в JDBC-ODBC мосте. Его можно как-то заапгрейдить?

запрос который ты привел и получение полей из него, работать не будет.
в результате запроса получаешь один столбец с именем COL, а строкой
int c1 = rs.getInt("COL1"); пытаешься забрать значение поля, которого
в результате нет.

Sorry, очепятка :). Именна колонок у меня совпадают. Просто я заменяя своё название таблицы и колонок на table1 и col1 опечатался.

дай мне БД свою. приватно.
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32848027
mahorkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автордай мне БД свою. приватно.

Куда слать (914кб)? Кинь аддрес, please, на lavrimax@hotmail.com.
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32848700
mahorkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ларчик просто открывался...

Разобрался. В Eclipse в Watch expressions были добавлены выражения, которые считывают значения из колонок рекордсета (rs.getInt(<colName>), rs.getString(<colName>) и т.д). Как я понимаю эти значения могут быть считаны только 1 раз. У меня получалось, что сначала их считывала IDE, и только после этого пыталось считать моё приложение.

Хочется ругаться матом ;)
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32848946
Naug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто такой рекордсет? Никогда о таких ограничениях на считывагие данных из бд не слышал. Скорее уж rs.next() подвёл. Покаж код.
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32849597
big_mammoth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А.Грасоff™началось...

самый лучший - JSQLConnect http://www.jnetdirect.com

--
Lacrima Mosa Est

Так за него же денужку надо платить, или уже появилась есть таблетка?
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32849610
mahorkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NaugКто такой рекордсет? Никогда о таких ограничениях на считывагие данных из бд не слышал. Скорее уж rs.next() подвёл. Покаж код.

Код: plaintext
1.
Допустим в коде есть комманда: rs.getInt("COL") и в Watch Expressions (Eclipse IDE) есть выражение rs.getInt("COL"). Втаком случае rs.getInt("COL") в коде всегда кидает exception (у меня, по крайней мере). Если удалить rs.getInt("COL") из Watch Expressions, то всё работает.
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32849612
mahorkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorry, c тагами намудрил.
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32968607
СыР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка:[Microsoft][ODBC Driver Manager] Invalid descriptor index
Код: plaintext
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.
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.sql.*;

public class HowToUseTable {

    public static void main (String[] args){
              ShowForm();
         }

   public static void ShowForm(){
             ConnectToBase();

  JFrame frame1=new JFrame("БД");
    frame1.setSize( 400 , 300 );
    frame1.setLocationRelativeTo(null);//...центр экрана
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame1.setVisible(true);
    }

    public static void ConnectToBase() {
        try{
             Class.forName(DBConnection.drv);
                     System.out.println("Драйвер загружен...");
        Connection conn=DriverManager.getConnection(DBConnection.dsn,DBConnection.user, DBConnection.psw);
       System.out.println("Подключились...");

             JTable table=new JTable();
            String[] tableColumnsName = {"col 1"};
            DefaultTableModel aModel = (DefaultTableModel) table.getModel();
            aModel.setColumnIdentifiers(tableColumnsName);

       Statement stmt= conn.createStatement();
          ResultSet rs=  stmt.executeQuery("select COF_NAME from COFFEES");

// Loop through the ResultSet and transfer in the Model
                java.sql.ResultSetMetaData rsmd = rs.getMetaData();
                int colNo = rsmd.getColumnCount();

                while(rs.next()){
                 Object[] objects = new Object[colNo];
                 for(int i= 0 ;i<colNo;i++){

                  objects[i]=rs.getObject(i);
                     System.out.println(rs.getObject(i));
                  }
                 aModel.addRow(objects);
                }
              table.setModel(aModel);

                }
        catch (ClassNotFoundException e) {
            System.out.println("Ошибка:"+e.getMessage());
        } catch (SQLException e) {
            System.out.println("Ошибка:"+e.getMessage());
        }
     }
}
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32968695
СыР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
паки-паки выручил :) спасибо!
поля с 1-цы нумеруются
...
Рейтинг: 0 / 0
JDBC + ODBC + MSSQL2000
    #32968703
паки-паки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ошибка здесь:

Код: plaintext
1.
2.
3.
4.
5.
6.
...
 for  ( int  i =  0 ; i < colNo; i++) {
  objects[i] = rs.getObject(i);
  System.out.println(rs.getObject(i));
}
...

должно быть так:

Код: plaintext
1.
2.
3.
4.
5.
6.
...
 for  ( int  i =  1 ; i <= colNo; i++) {
  objects[i] = rs.getObject(i);
  System.out.println(rs.getObject(i));
}
...
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC + ODBC + MSSQL2000
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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