本文整理汇总了C#中System.Data.DataTableReader.Dispose方法的典型用法代码示例。如果您正苦于以下问题:C# DataTableReader.Dispose方法的具体用法?C# DataTableReader.Dispose怎么用?C# DataTableReader.Dispose使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.DataTableReader
的用法示例。
在下文中一共展示了DataTableReader.Dispose方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Retrieve
/// <summary>
/// Retrieve object header, links and properties.
/// </summary>
/// <param name="header">In/Out header value.</param>
/// <param name="links">Array of object links.</param>
/// <param name="props">Array of object properties.</param>
public void Retrieve( ref HEADER header, out LINK[] links,
out PROPERTY[] props )
{
#region debug info
#if (DEBUG)
Debug.Print( "-> ODB.Retrieve( {0}, {1} )", header.ID, header.Type );
#endif
#endregion
List<PROPERTY> _props = new List<PROPERTY>(); // list to store properties of object
List<LINK> _links = new List<LINK>(); // list to store child proxy objects
DbDataReader dr = null;
DbCommand cmd = null;
// init out parameters
links = null;
props = null;
// open connection and start new transaction if required
TransactionBegin();
try {
// get object header
HEADER newHeader = get_header( header.ID );
if( header.Stamp == newHeader.Stamp ) {
header = newHeader;
// close connection and commit transaction if required
TransactionCommit();
return;
}
#region retrive props from _properties
cmd = new SqlCommand( string.Format(
"SELECT [Name], [Value] FROM [dbo].[_properties] WHERE [ObjectID] = {0}",
header.ID) );
cmd.Connection = m_con;
cmd.Transaction = m_trans;
dr = cmd.ExecuteReader( CommandBehavior.SingleResult );
try {
// read all simple properties of object
while( dr.Read() ) {
// read properties from row
string name = (string) dr["Name"];
object val = dr["Value"];
// convert byte array to memory stream
if( val.GetType() == typeof(Byte[] ) ) {
val = new PersistentStream((Byte[])val );
}
// build PersistentProperty upon recieved name and value and
// save property in collection
_props.Add( new PROPERTY( name, new ValueBox(val), PROPERTY.STATE.New ));
}
} finally {
// Dispose SqlDataReader
dr.Dispose();
}
#endregion
#region retrive props from _images
cmd = new SqlCommand( string.Format(
"SELECT [Name] FROM [dbo].[_images] WHERE [ObjectID] = {0}",
header.ID) );
cmd.Connection = m_con;
cmd.Transaction = m_trans;
SqlDataAdapter da = new SqlDataAdapter( (SqlCommand)cmd );
DataTable dt = new DataTable(); // table for object proxy properties
da.Fill( dt ); // fill table
DataTableReader dtr = new DataTableReader(dt);
try {
while( dtr.Read() ) {
// save data from SqlDataReader because we need non SequentialAccess in datarow
string name = (string) dtr["Name"];
// save property in collection
_props.Add( new PROPERTY( name,
new ValueBox( read_blob( header.ID, name ) ),
PROPERTY.STATE.New ));
}
} finally {
dtr.Dispose();
}
#endregion
#region retrive links
cmd = new SqlCommand( string.Format(
"SELECT [ID], [ObjectName], [ObjectType], [TimeStamp]\n" +
"FROM [dbo].[_objects]\n" +
"WHERE [ID] IN (SELECT Child FROM [dbo].[_links] WHERE Parent = {0})",
header.ID) );
cmd.Connection = m_con;
cmd.Transaction = m_trans;
//.........这里部分代码省略.........