Как создать пользовательский алиас ODBC под Windows |
Здравствуйте, гость ( Вход | Регистрация )
Как создать пользовательский алиас ODBC под Windows |
silver47 |
26.4.2011, 6:46
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Доброго времени суток.
Может кто сталкивался, как создать на системе алиас ODBC для подключения к БД, если я знаю все необходимые данные, хост, порт, тип ДБ, имя пользователя, пароль. Спасибо. |
|
|
Litkevich Yuriy |
27.4.2011, 18:31
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Панель управления[, Администрирование], источники данных ODBC
|
|
|
silver47 |
27.4.2011, 18:34
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Панель управления[, Администрирование], источники данных ODBC это дураку понятно, задача усложняется - это необходимо сделать програмно. То есть серверная часть ПО будет знать все о БД, нужно при первом подключении клиента создать в системе програмно этот алиас |
|
|
Borodeys |
27.4.2011, 18:40
Сообщение
#4
|
Студент Группа: Участник Сообщений: 23 Регистрация: 10.4.2011 Пользователь №: 2588 Спасибо сказали: 0 раз(а) Репутация: 0 |
Занимаюсь аналогичной проблемой уже длительное время. Подключение к БД осуществляется следующим образом
создаем файл connection.h: #ifndef CONNECTION_H #define CONNECTION_H #include <QMessageBox> #include <QSqlDatabase> #include <QSqlError> #include <QtSql> static bool createConnection() { QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("такая_то_база"); db.setUserName("логин_такой_то"); db.setPassword("пароль_эдакий"); bool connected = db.open(); if (!connected) { QMessageBox::critical(0, ("connection.h "),"Cannot open database =[\n " +(db.lastError().text()), QMessageBox::Cancel); return false; } } #endif // CONNECTION_H Затем из main.cpp обращаемся к данному заголовочному файлу: #include <QtGui/QApplication> #include "mainwindow.h" #include "connection.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.driverName()="count"; app.addLibraryPath("pugins"); if (!createConnection()){ QMessageBox::critical(0, ("main.cpp"),"Cannot open database =[\n" +(db.lastError().text()), QMessageBox::Cancel); return 1; } MainWindow w; w.show(); return app.exec(); } Затем, если у тебя window xp и MSSQL server, создаем драйвер подключения с именем нашей базы данных Панель управления\ Администрирование\Источники данных (ODBC)\вкладка Системный DSN кнопочка добавить Выбираем драйвер SQL Server Native Client и указываем его имя, как имя нашей базы данных. Барабанная дробь........... Тада, теперь можно подключаться к ODBC базе данных. Однако здесь только все начинается, по умолчанию QT использует только драйвера SQLite, а нам же нужен драйвер qsqlodbc4.dll и libqsqlodbc4.lib, которые лежат в папке qtdir\qt\plugins\sqldrivers. Увы, как их подключить я не знаю, необходимо что-то прописать в .pro файле. Если узнаешь как, обязательно напиши. |
|
|
silver47 |
27.4.2011, 18:48
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Спасибо, конечно, но не то, пробую объяснить еще разик. Нет в источниках данных ODBC записи о подключении к моей базе данных. Необходимо создать его, но не руками.... пуск панель управления и так далее.... а из программы.... То есть ну вот не было его, а потом програмно он появился. Никто ни в какую панель управления не лазил, это все с помошью программы делается....
ДА это платформозависимая штука, наверняка, придеться использовать WinAPI. Кто нибудь знает возможно ли это средствами Qt и как это сделать. Раньше создавал инсталятор с помошью UltimateInstall и он, в процессе установки, создавал источник данных ODBC. Ну, в конце-концов, не будешь каждому пользователю объяснять как создать источник данных ODBC. Запрос "как програмно создать источник данных ODBC Delphi" выдает кучу ссылок и статей. Но как-то это можно же сделать в Qt Вот так это можно сделать малой кровью Сообщение отредактировал silver47 - 27.4.2011, 19:16 |
|
|
Litkevich Yuriy |
28.4.2011, 9:59
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
silver47, тебе точно псевдоним нужно создать или просто соединится через ODBC с СУБД?
Если просто соединиться, то смотри строку запроса для конкретной СУБД. А пишут её вместо имени БД, например:
|
|
|
silver47 |
28.4.2011, 11:06
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
А пишут её вместо имени БД, например: то есть, если нет источника данных ODBC, но я укажу
я смогу подключиться к моему MS SQL серверу? Сообщение отредактировал silver47 - 28.4.2011, 11:08 |
|
|
Litkevich Yuriy |
28.4.2011, 11:10
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
silver47 |
28.4.2011, 11:25
Сообщение
#9
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Вот уж спасибо..... это как раз то, что я искал!!!!!
|
|
|
NoXi0uZ |
15.8.2011, 17:14
Сообщение
#10
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 20.12.2010 Пользователь №: 2287 Спасибо сказали: 0 раз(а) Репутация: 0 |
вообще есть в odbcconf.exe - позволяет из консольки сварганить DSN.
|
|
|
Текстовая версия | Сейчас: 5.12.2024, 6:55 |