Страница 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
Здравствуйте,

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

Спасибо.