QT,MS SQL server, подключение к ДБ, Как правильно настроить подключение |
Здравствуйте, гость ( Вход | Регистрация )
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: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" И без всяких дополнительный телодвижений с настройкой DSN'ов. И разумеется в этом случае можно легко сменить БД.
|
|
|
enslaver |
2.6.2012, 9:38
Сообщение
#5
|
Студент Группа: Участник Сообщений: 30 Регистрация: 25.3.2010 Пользователь №: 1565 Спасибо сказали: 0 раз(а) Репутация: 0 |
В 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" И без всяких дополнительный телодвижений с настройкой 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: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 |
Попробуй в ней посмотреть на 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 |
Убил весь сегодняшний день на то что бы найти, как все же выполнить это подключение, перепробовал сотни строк инициализации, и только 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 сервера. |
|
|
Текстовая версия | Сейчас: 26.11.2024, 23:09 |