Страница 1 из 1
Хранение соединений в моем приложении
Добавлено: 29 июн 2010, 17:40
fantomus
Здравствуйте!
У меня есть потребность создавать и хранить соединения с БД в своем приложении и регистрировать их в отчете программно.
Подскажите, как это правильно сделать?
Спасибо.
Хранение соединений в моем приложении
Добавлено: 29 июн 2010, 19:03
Jan
Здравствуйте,
Можно использовать такой код:
Код: Выделить всё
report.Databases.Clear();
report.Databases.Add(new Stimulsoft.Report.Dictionary.StiOleDbDatabase("NameInReport", ConnectionString);
Спасибо.
Хранение соединений в моем приложении
Добавлено: 30 июн 2010, 08:38
fantomus
У меня ситуация сложнее.
Я не знаю, какой тип соединения будет создаваться. Поэтому мне нужно использовать StiDatabase.
Для создания и редактирования соединения хочу воспользоваться вашим мастером.
Вот что мне удалось добиться:
Код: Выделить всё
// Создание нового соединения
StiDatabase database = StiReportNewConnection.CreateNewConnection();
if (database == null) return;
// Эти параметры будут сохранены в БД
string connectionType = database.GetType().ToString();
string connectionName = database.Name;
string connectionAlias = database.Alias;
string connectionString = database.ConnectionString; //???
bool connectionPromptUserNameAndPassword = database.PromptUserNameAndPassword; //???
Код: Выделить всё
// Редактирование соединения
StiDatabase database = StiActivator.CreateObject(connectionType) as StiDatabase;
database.Name = connectionName;
database.Alias = connectionAlias;
database.ConnectionString = connectionString; //???
database.PromptUserNameAndPassword = connectionPromptUserNameAndPassword; // ???
if (database.Edit(false) == DialogResult.OK)
{
// Сохранение в БД
}
Код: Выделить всё
// Регистрация
report.Dictionary.Databases.Clear();
// дальше, конечно, должен быть цикл...
StiDatabase database = StiActivator.CreateObject(connectionType) as StiDatabase;
database.Name = connectionName;
database.Alias = connectionAlias;
database.ConnectionString = connectionString; //???
database.PromptUserNameAndPassword = connectionPromptUserNameAndPassword; // ???
report.Dictionary.Databases.Add(database);
Осталось непонятно как добраться к ConnectionString и PromptUserNameAndPassword.
Хранение соединений в моем приложении
Добавлено: 30 июн 2010, 09:34
fantomus
Извиняюсь, сразу не обратил внимание, что не все типы соединений имеют ConnectionString и PromptUserNameAndPassword.
Нужно выполнять приведение к конкретному типу:
Код: Выделить всё
if(database is StiSqlDatabase)
(database as StiSqlDatabase).ConnectionString = connectionString;
Также можно использовать StiSerializing и сохранять в БД сериализованный объект.
Код: Выделить всё
StiSerializing serializer = new StiSerializing(new StiReportObjectStringConverter());
serializer.Serialize(database, stream, "MyApplication");
serializer.Deserialize(database, stream, "MyApplication");
Поправьте, если что не так.
Хранение соединений в моем приложении
Добавлено: 01 июл 2010, 06:19
Jan
Здравствуйте,
Все верно, нечего добивать.
Спасибо.