powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Всегда пустой результат SELECT'a из Cache по ODBC
16 сообщений из 16, страница 1 из 1
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663213
daynin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, я пробовал выполнить простой SELECT из таблицы. Подключение по ODBC проходит. Запрос выполняется, но в результате приходят только заголовки таблиц, но самих записей нет. Пробовал выполнять один и тот же запрос и в C#, и в C++(QT) проекте. Подскажите, пожалуйста, в чем может быть проблема?

Заранее благодарю!
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663215
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dayninПодскажите, пожалуйста, в чем может быть проблема?Код приведите.
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663223
daynin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
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.
using System;
using System.Collections.Generic;
using System.Data.Odbc;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ODBCTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string queryString = "SELECT * FROM SQLUser.ACCOUNTS";
            var command = new OdbcCommand(queryString);

            string connectionString = "DRIVER={InterSystems ODBC};SERVER=localhost;PORT=1972;DATABASE=USER;UID=_system;PWD=SYS;";
            using (var connection = new OdbcConnection(connectionString))
            {
                command.Connection = connection;
                connection.Open();
                var result = command.ExecuteReader();
            }
        }
    }
}



Это пример на C#.
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663231
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dayninно в результате приходят только заголовки таблиц, но самих записей нет.А вы уверены что записи в таблице вообще есть ? проверьте выполнение запроса в портале управления, и можно еще включить вывод в режиме ODBC
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663235
daynin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данные точно есть. Такое поведение наблюдается и в том случае, когда я делаю SELECT из таблиц пространства имен SAMPLES самой Cache.
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663240
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daynin ,

Покажите как Вы проверяете в коде, что данных нет (или они есть).
Не увидел вывода данных в Вашем коде.
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663241
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dayninДанные точно есть. Такое поведение наблюдается и в том случае, когда я делаю SELECT из таблиц пространства имен SAMPLES самой Cache.Если через портал управления, тоже ничего не отображается, то откуда уверенность что данные есть ? и откуда вы их ожидаете увидеть в вашем C# приложении, если даже портал управления данные не показывает.
покажите описание вашего класса из которого вы тянете данные.
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663257
daynin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit daynin ,

Покажите как Вы проверяете в коде, что данных нет (или они есть).
Не увидел вывода данных в Вашем коде.Дебагом проверяю. Ставлю брейкпоинт и смотрю. Могу, кончено, пирвести пример с выводом. Но это ничего не изменит.

DAiMordayninДанные точно есть. Такое поведение наблюдается и в том случае, когда я делаю SELECT из таблиц пространства имен SAMPLES самой Cache.Если через портал управления, тоже ничего не отображается, то откуда уверенность что данные есть ? и откуда вы их ожидаете увидеть в вашем C# приложении, если даже портал управления данные не показывает.Данные есть. Я проверял в том числе и Cache Monitor'ом. Да и опять же я выше говорил о том, что аналогично селек ничего не возвращает кроме заголовков и при запросе из таблиц, которые предоставляет Cache в качестве тестовых (в которых данные точно есть (и да, я это проверял)).
DAiMor покажите описание вашего класса из которого вы тянете данные.Я не использую биндинг к классам. Хочу получать данные в виде result set'а просто выполнив SQL-запрос.
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663265
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем не менее, для того, чтобы была таблица, нужно описать класс. Биндинг тут ни при чем.
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663270
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня данные прекрасно отображаются.
Попробуйте следующий код ( Unicode SQLTypes=1 в том случае, если у Вас Unicode-версия):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
using (var connection = new OdbcConnection("DRIVER={InterSystems ODBC35};SERVER=localhost;PORT=1972;DATABASE=SAMPLES;UID=_system;PWD=SYS;Unicode SQLTypes=1;"))
{
  using (var command = new OdbcCommand("SELECT top 3 * FROM Sample.Person", connection))
  {
    connection.Open();
    var result = command.ExecuteReader();
    while (result.Read())
    {
      //textBox1.Text += result["SSN"] + Environment.NewLine;
      Console.WriteLine(result["SSN"]);
    };
  }
}
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663394
daynin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servitУ меня данные прекрасно отображаются.
Попробуйте следующий код ( Unicode SQLTypes=1 в том случае, если у Вас Unicode-версия):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
using (var connection = new OdbcConnection("DRIVER={InterSystems ODBC35};SERVER=localhost;PORT=1972;DATABASE=SAMPLES;UID=_system;PWD=SYS;Unicode SQLTypes=1;"))
{
  using (var command = new OdbcCommand("SELECT top 3 * FROM Sample.Person", connection))
  {
    connection.Open();
    var result = command.ExecuteReader();
    while (result.Read())
    {
      //textBox1.Text += result["SSN"] + Environment.NewLine;
      Console.WriteLine(result["SSN"]);
    };
  }
}



Спасибо! В C# действительно работает!

Но почему-то же самое но в QT не работает:

Код: 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.
#include <QCoreApplication>
#include <QtCore>
#include <QtSql>
#include "iostream"

int main(int argc, char *argv[])
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("DRIVER={InterSystems ODBC};SERVER=localhost;PORT=1972;DATABASE=USER;UID=_system;PWD=SYS; Unicode SQLTypes=1;");

    if (!db.open())
    {
        std::cout << "Error opening database" << std::endl;
        return -1;
    }
    else
    {
        QSqlQuery query;
        if(query.exec("SELECT * FROM ACCOUNTS")){
            std::cout << "Select succses!" << std::endl;
        }

        while (query.next())
        {
            std::cout << "Getting results..." << std::endl;
            std::cout << query.value(0).toString().toStdString() << std::endl;
        }

        std::cout << "EXIT!" << std::endl;
        return 0;
    }
}



Блок А.Н.Тем не менее, для того, чтобы была таблица, нужно описать класс. Биндинг тут ни при чем.
Я таблицы нагенерил SQL скриптом через Cache Monitor (это в случае моих данных, но есть то данные для примера от самой Cache и с ними таже проблема).
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663578
daynin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще если дернуть

Код: plaintext
1.
std::cout << query.lastError().text().toStdString();



После query.exec(...); то будет выведена следующая ошибка:

[Cache ODBC][State : S1106][Native Code 468] [C:\Qt\Tools\QtCreator\bin\build-OD
BC-Desktop_Qt_5_3_0_MSVC2012_OpenGL_32bit-Deb] Fetch type out of range QODBC3: U
nable to fetch firstEXIT!
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663829
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dayninСпасибо! В C# действительно работает!

Но почему-то же самое но в QT не работает:Не работает, потому что
Код: plaintext
1.
DRIVER={InterSystems ODBC}

, а должно быть
Код: plaintext
1.
DRIVER={InterSystems ODBC35}


Следующий код у меня выводит данные без проблем:
Код: 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.
#include <QtSql>
#include "iostream"

int main()
{
  QSqlDatabase db = QSqlDatabase::addDatabase("QODBC3");

  db.setDatabaseName("DRIVER={InterSystems ODBC35};SERVER=localhost;PORT=1972;DATABASE=SAMPLES;UID=_system;PWD=SYS;Unicode SQLTypes=1;");

  if (!db.open())
  {
    std::cout << "Error opening database" << std::endl;
    return -1;
  }
  else
  {
    QSqlQuery query;
    if(query.exec("SELECT TOP 3 * FROM SAMPLE.PERSON")){
      std::cout << "Select success!" << std::endl;
    }

    while (query.next())
    {
      std::cout << "Getting results..." << std::endl;
      std::cout << query.value("SSN").toString().toStdString() << std::endl;
    }

    std::cout << "EXIT!" << std::endl;
    db.close();
    return 0;
  }

}
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663883
daynin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

Странно, у меня ваш код падает при попытке открыть соединение. Не могли бы вы сказать, какой драйвер вы используете при создании ODBC источника? Какая версия у вас Cache? И какая версия QT?

Заранее спасибо!
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38663913
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dayninКакая версия у вас Cache?Cache for Windows (x86-64) 2014.1.1 UnicodedayninИ какая версия QT?Qt 5.3.0 (x32)dayninкакой драйвер вы используете при создании ODBC источника?
Код: sql
1.
2.
3.
4.
CacheODBC.dll
CacheODBC64.dll
CacheODBC35.dll -- соответственно этот
CacheODBC3564.dll
...
Рейтинг: 0 / 0
Всегда пустой результат SELECT'a из Cache по ODBC
    #38664619
daynin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servitdayninКакая версия у вас Cache?Cache for Windows (x86-64) 2014.1.1 UnicodedayninИ какая версия QT?Qt 5.3.0 (x32)dayninкакой драйвер вы используете при создании ODBC источника?
Код: sql
1.
2.
3.
4.
CacheODBC.dll
CacheODBC64.dll
CacheODBC35.dll -- соответственно этот
CacheODBC3564.dll



Огромное спасибо за помощь! Дело было и в версии драйвера ODBC и в версии самой Cache (у меня была 2007). С Cache 2014 и драйвером ODBC35 все заработало!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Всегда пустой результат SELECT'a из Cache по ODBC
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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