crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QT,MS SQL server, подключение к ДБ, Как правильно настроить подключение
enslaver
  опции профиля:
сообщение 1.6.2012, 21:01
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 25.3.2010
Пользователь №: 1565

Спасибо сказали: 0 раз(а)




Репутация:   0  


Убил весь сегодняшний день на то что бы найти, как все же выполнить это подключение, перепробовал сотни строк инициализации, и только 1 способ мне помог:
Оказалось что для того что бы использовать драйвер QODBC нужно было сначала настроить АЛИАСЫ в windows.

"Алиас"
создаем драйвер подключения с именем нашей базы данных
Панель управления\ Администрирование\Источники данных (ODBC)\вкладка Системный DSN кнопочка добавить
Выбираем драйвер SQL Server Native Client и указываем его имя, как имя нашей базы данных ( у меня это DS_rodioncevo).
Барабанная дробь........... Тада, теперь можно подключаться к ODBC базе данных.

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setConnectOptions();
db.setDatabaseName("DS_rodioncevo");
db.setUserName("sa");
db.setPassword("test");

Прошу администрацию прикрепить данную тему, так как только на вашем форуме пересмотрел не мало статей что бы найти это решение!.

И если кто знает как по другому выполнить подключение в MS SQL server 2008 прошу описать здесь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.6.2012, 22:06
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Может тогда лучше в вики опубликовать?
Туда можно зайти под тем же ником, что и на форуме... ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
enslaver
  опции профиля:
сообщение 1.6.2012, 22:10
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 25.3.2010
Пользователь №: 1565

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 1.6.2012, 22:06) *
Может тогда лучше в вики опубликовать?
Туда можно зайти под тем же ником, что и на форуме... ;)


Сначала нужно узнать другие способы подключения, так как в этом нельзя сменить базу данных.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.6.2012, 22:19
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


В ODBC есть такое понятие как Connection String, они бывают вроде:
Цитата
"Driver={SQL Server};Server=(local);Trusted_Connection=Yes;Database=AdventureWorks;"
"Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;Persist Security Info=False;Trusted_Connection=Yes"
"Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\bin\Northwind.mdb"
"Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\bin\book1.xls"
"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:\bin"
"DSN=dsnname"
Если взять твой случай, то получится такой код:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setConnectOptions();
db.setDatabaseName("Driver={SQL Server};Server=(local);Trusted_Connection=Yes;Database=AdventureWorks;");
db.setUserName("sa");
db.setPassword("test");
И без всяких дополнительный телодвижений с настройкой DSN'ов. И разумеется в этом случае можно легко сменить БД.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
enslaver
  опции профиля:
сообщение 2.6.2012, 9:38
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 25.3.2010
Пользователь №: 1565

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 1.6.2012, 22:19) *
В ODBC есть такое понятие как Connection String, они бывают вроде:
Цитата
"Driver={SQL Server};Server=(local);Trusted_Connection=Yes;Database=AdventureWorks;"
"Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;Persist Security Info=False;Trusted_Connection=Yes"
"Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\bin\Northwind.mdb"
"Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\bin\book1.xls"
"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:\bin"
"DSN=dsnname"
Если взять твой случай, то получится такой код:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setConnectOptions();
db.setDatabaseName("Driver={SQL Server};Server=(local);Trusted_Connection=Yes;Database=AdventureWorks;");
db.setUserName("sa");
db.setPassword("test");
И без всяких дополнительный телодвижений с настройкой DSN'ов. И разумеется в этом случае можно легко сменить БД.

Проблема заключается в том что с этими строками он не может подключиться к ДБ, я перепробывал практически все возможные комбинации!
А сама ошибка выглядит так (использовал ваш код)
QSqlError(2, "QODBC3: Unable to connect", "[Microsoft][ODBC SQL Server Driver][Shared Memory]SQL Server не существует, или доступ запрещен. [Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionOpen (Connect()).")

Сообщение отредактировал enslaver - 2.6.2012, 9:56
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 2.6.2012, 10:05
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Значит connection string не правильный, так как все должно работать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
enslaver
  опции профиля:
сообщение 2.6.2012, 10:17
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 25.3.2010
Пользователь №: 1565

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 2.6.2012, 10:05) *
Значит connection string не правильный, так как все должно работать...

Вот именно что должно!... Знать бы еще как.
Кстати программа написанная в Embarcadero RAD Studio XE2 подключается без проблем.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 2.6.2012, 10:20
Сообщение #8


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Попробуй в ней посмотреть на connection string, если есть такая возможность.
Или попробовать в студии установить соединение, а ней вроде так же можно подсмотреть connection string.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
enslaver
  опции профиля:
сообщение 2.6.2012, 11:22
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 25.3.2010
Пользователь №: 1565

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 2.6.2012, 10:20) *
Попробуй в ней посмотреть на connection string, если есть такая возможность.
Или попробовать в студии установить соединение, а ней вроде так же можно подсмотреть connection string.

Это строка для ADOConnection.
Provider=SQLOLEDB.1;Password=test;Persist Security Info=True;User ID=sa;Initial Catalog=DS_rodioncevo;Data Source=АЛЕКСЕЙ-ПК\SQLEXPRESS


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

А вот где посмотреть строку подключения в MS SQL managere я не знаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MedEx
  опции профиля:
сообщение 29.7.2012, 0:44
Сообщение #10


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 11.2.2011
Пользователь №: 2403

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(enslaver @ 1.6.2012, 21:01) *
Убил весь сегодняшний день на то что бы найти, как все же выполнить это подключение, перепробовал сотни строк инициализации, и только 1 способ мне помог:
Оказалось что для того что бы использовать драйвер QODBC нужно было сначала настроить АЛИАСЫ в windows.

"Алиас"
создаем драйвер подключения с именем нашей базы данных
Панель управления\ Администрирование\Источники данных (ODBC)\вкладка Системный DSN кнопочка добавить
Выбираем драйвер SQL Server Native Client и указываем его имя, как имя нашей базы данных ( у меня это DS_rodioncevo).
Барабанная дробь........... Тада, теперь можно подключаться к ODBC базе данных.

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setConnectOptions();
db.setDatabaseName("DS_rodioncevo");
db.setUserName("sa");
db.setPassword("test");

Прошу администрацию прикрепить данную тему, так как только на вашем форуме пересмотрел не мало статей что бы найти это решение!.

И если кто знает как по другому выполнить подключение в MS SQL server 2008 прошу описать здесь.


Database = QSqlDatabase::addDatabase("QODBC");
Database.setDatabaseName(tr("Driver={SQL Server};"
"Server=%1\\SQLEXPRESS;"
"Database=%2;"
"Trusted_Connection=yes;")
.arg(HostName)
.arg(DBName));
То есть вся запара была в двойном слеше и имени SQL сервера.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.11.2024, 3:49