Руководство по работе с БД Firebird с использованием библиотеки ADO .Net 2.0

       

Свойства объектов Ole Db


Раньше в библиотеке ADO у объектов Connection, Command и Recordset существовал набор свойств Properties, при помощи которого можно было устанавливать и считывать свойства соответствующих Ole Db интерфейсов: IDBProperties, ISessionProperties, ICommandProperties, IRowsetIndex. По непонятным мне причинам разработчики ADO .Net исключили чтение/запись свойств напрямую, лишив нас возможности получения расширенной информации об источнике данных, а так же тонкой настройки поведения провайдера.

В результате исследования библиотеки ADO .Net было найдено решение, которое позволило применять следующий код:

public void ReadPropertiesTest() { OleDbConnection con = ConnectionProvider.CreateConnection(); con.Open();

//OleDbConnection properties

OleDbProperties properties = OleDbProperties.GetPropertiesFor(con); Assert.AreNotEqual(0, properties.Count); PrintProperties(properties);

//OleDbCommand properties

OleDbCommand cmd = new OleDbCommand("select * from country", con, con.BeginTransaction());

properties = OleDbProperties.GetPropertiesFor(cmd); Assert.AreNotEqual(0, properties.Count); PrintProperties(properties);

//Property from Rowset ole db group can be changed

properties["Use Bookmarks"].Value = true; Assert.IsTrue(Convert.ToBoolean(properties["Use Bookmarks"].Value));

//OleDbDataReader properties

using (OleDbDataReader rdr = cmd.ExecuteReader()) { properties = OleDbProperties.GetPropertiesFor(rdr); PrintProperties(properties); }

con.Close(); }

private void PrintProperties(OleDbProperties properties) { foreach (OleDbProperty prop in properties.Values) Console.WriteLine((prop.Required ==true ? "[r] " : "") + prop.Name + "=" + prop.ValueString);

}



Содержание раздела