Свойства объектов 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);
}