crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Как создать пользовательский алиас 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  


Цитата(Litkevich Yuriy @ 27.4.2011, 20:31) *
Панель управления[, Администрирование], источники данных 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 с СУБД?
Если просто соединиться, то смотри строку запроса для конкретной СУБД.
А пишут её вместо имени БД, например:
db.setDatabaseName ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\myDb;Extended Properties=Paradox 5.x;");

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 28.4.2011, 11:06
Сообщение #7


Активный участник
***

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

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




Репутация:   6  


Цитата(Litkevich Yuriy @ 28.4.2011, 11:59) *
А пишут её вместо имени БД, например:


то есть, если нет источника данных ODBC, но я укажу
db.setDatabaseName ("Driver={SQL Native Client};Server=MyServer;Database=MyDB; Uid=user;Pwd=password;");

я смогу подключиться к моему 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, 14:06) *
я смогу подключиться к моему MS SQL серверу?
да

Т.е. ты его создаёшь внутри программы и только на время её работы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 19.4.2024, 21:31