Хранение соединений в моем приложении

Обсуждение Stimulsoft Reports.NET
Ответить
fantomus
Сообщения: 215
Зарегистрирован: 22 апр 2009, 06:41
Откуда: Kyiv, Ukraine

Хранение соединений в моем приложении

Сообщение fantomus »

Здравствуйте!

У меня есть потребность создавать и хранить соединения с БД в своем приложении и регистрировать их в отчете программно.
Подскажите, как это правильно сделать?

Спасибо.
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Хранение соединений в моем приложении

Сообщение Jan »

Здравствуйте,

Можно использовать такой код:

Код: Выделить всё

report.Databases.Clear();
report.Databases.Add(new Stimulsoft.Report.Dictionary.StiOleDbDatabase("NameInReport", ConnectionString);
Спасибо.
fantomus
Сообщения: 215
Зарегистрирован: 22 апр 2009, 06:41
Откуда: Kyiv, Ukraine

Хранение соединений в моем приложении

Сообщение 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.
fantomus
Сообщения: 215
Зарегистрирован: 22 апр 2009, 06:41
Откуда: Kyiv, Ukraine

Хранение соединений в моем приложении

Сообщение 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");
Поправьте, если что не так.
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Хранение соединений в моем приложении

Сообщение Jan »

Здравствуйте,

Все верно, нечего добивать.

Спасибо.
Ответить