Russian Qt Forum
Ноябрь 23, 2024, 15:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: MS SQL + ODBC (и не только)  (Прочитано 9079 раз)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« : Июль 15, 2007, 15:45 »

Добрый день.

Возникла следующая проблема: нужно начать работать с базой данных на MS SQL 2000 сервере, используя ODBC.

Собрал драйвер, создал DSN в ODBC администраторе и пытаюсь использовать его из программы как:

Код:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");


Получаю ошибку следующего содержания:

Цитировать
[ [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию QODBC3: Unable to connect]


В связи с этим несколько вопросов:

1. Как корректно организовать подключение к ODBC? Надо ли указывать какие-либо доп. параметры? Нужны ли специальные значения для user & password?
2. На машине несколько ODBC DSN'ов - как указать, к какому именно я хочу присоединиться?
3. Какие параметры DNS предпочтительней указывать при его создании? Имеется в виду имя и т.д.
4. Если базы данных на сервере нету, она должна создаваться из программы. С MYSQL работает прекрасно. Но будет ли это работать для MS SQL?
5. Надо ли задавать какие-либо определенные параметры для самого SQL сервера и базы данных, чтобы они корретно поддерживались?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
SABROG
Гость
« Ответ #1 : Июль 15, 2007, 16:20 »

Добавь это
Код:

db.setDatabaseName("имя_dsn_источника");


В ODBC менеджере для источника вроде бы не обязательно устанавливать базу данных по умолчанию. В MSSQL чтобы узнать список таблиц или баз данных надо использовать системные таблицы и процедуры, почитай про это на форуме sql.ru, там отвечали на этот вопрос.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Июль 15, 2007, 18:05 »

ок, спасибо, я тож так сделал, в конце концов,
вроде конектиться начало, но ошибка не пропала...
(хотя странно - пишет, что нету источника данных, хотя базу юзает...)

То есть вопрос 2 отпал. А вот с остальным пока не очень ясно.
Пункт 3 особо беспокоит.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
WW
Гость
« Ответ #3 : Июль 16, 2007, 12:48 »

Цитата: "Racheengel"

1. Как корректно организовать подключение к ODBC? Надо ли указывать какие-либо доп. параметры? Нужны ли специальные значения для user & password?
2. На машине несколько ODBC DSN'ов - как указать, к какому именно я хочу присоединиться?
3. Какие параметры DNS предпочтительней указывать при его создании? Имеется в виду имя и т.д.
4. Если базы данных на сервере нету, она должна создаваться из программы. С MYSQL работает прекрасно. Но будет ли это работать для MS SQL?
5. Надо ли задавать какие-либо определенные параметры для самого SQL сервера и базы данных, чтобы они корретно поддерживались?

по 3. как показали выше.
Код:
db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER={SQL Server};Server=XXX;APP=Enterprise Suite;DATABASE=XXX;Network=DBMSSOCN");
db.open("Login", "Pass")

можно так, если машина нулевая и твоего DSN'а еще нет.
если на локальном сервере будешь запускать, то Server=(local)
по 5. в основном не надо. это ближе к администрированию БД.
по 4. подключайся к БД master
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #4 : Июль 16, 2007, 13:07 »

ок, спасибо, попробую через master.
сейчас еще один головняк - заказчег хочет поддерживать и MySql, и M$ сервера. Но версии SQL у них тоже разные, вот пишу врапперы... Грустный
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
WW
Гость
« Ответ #5 : Июль 16, 2007, 13:12 »

Цитата: "Racheengel"
ок, спасибо, попробую через master.
сейчас еще один головняк - заказчег хочет поддерживать и MySql, и M$ сервера. Но версии SQL у них тоже разные, вот пишу врапперы... Грустный

страйся юзать стандарт SQL. меньше головняка будет. хотя избежать не удасться.
а.. и еще... названия таблиц и полей бери в "". на мс-кий [] забей.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #6 : Июль 16, 2007, 13:14 »

да стараюсь...
только там приколы, например M$ "IF NOT EXISTS" не понимает, вместо AUTOINCREMENT надо другие вещи писать, бинд параметров тоже немного по другому... в общем, стандарты у них на все разные...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
WW
Гость
« Ответ #7 : Июль 16, 2007, 13:17 »

Цитата: "Racheengel"
да стараюсь...
только там приколы, например M$ "IF NOT EXISTS" не понимает, вместо AUTOINCREMENT надо другие вещи писать, бинд параметров тоже немного по другому... в общем, стандарты у них на все разные...

тут опирайся на INFORMATION_SCHEMA. это стандарт. и сам ручками в коде... правда не помню, есть в мускуле оная. в PG точно есть. не говоря уж про коммерческие СУБД
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.097 секунд. Запросов: 23.