本文整理汇总了C#中Microsoft.SqlServer.Server.SmiEventSink_Default类的典型用法代码示例。如果您正苦于以下问题:C# SmiEventSink_Default类的具体用法?C# SmiEventSink_Default怎么用?C# SmiEventSink_Default使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
SmiEventSink_Default类属于Microsoft.SqlServer.Server命名空间,在下文中一共展示了SmiEventSink_Default类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetBytesConversion
private static long GetBytesConversion(SmiEventSink_Default sink, ITypedGettersV3 getters, int ordinal, SmiMetaData metaData, long fieldOffset, byte[] buffer, int bufferOffset, int length, bool throwOnNull) {
object obj = GetSqlValue( sink, getters, ordinal, metaData, null );
if (null == obj) {
throw ADP.InvalidCast();
}
SqlBinary value = (SqlBinary) obj;
if (value.IsNull) {
if (throwOnNull) {
throw SQL.SqlNullValue();
}
else {
// return zero length in any case
return 0;
}
}
if ( null == buffer ) {
return value.Length;
}
length = CheckXetParameters( metaData.SqlDbType, metaData.MaxLength * sizeof(char), value.Length,
fieldOffset, buffer.Length, bufferOffset, length );
Array.Copy( value.Value, checked((int)fieldOffset), buffer, bufferOffset, length );
return length;
}
示例2: SmiGettersStream
internal SmiGettersStream(SmiEventSink_Default sink, ITypedGettersV3 getters, int ordinal, SmiMetaData metaData)
{
this._sink = sink;
this._getters = getters;
this._ordinal = ordinal;
this._readPosition = 0L;
this._metaData = metaData;
}
示例3: SqlSequentialStreamSmi
private long _length; // Total length of the stream
internal SqlSequentialStreamSmi(SmiEventSink_Default sink, ITypedGettersV3 getters, int columnIndex, long length)
{
_sink = sink;
_getters = getters;
_columnIndex = columnIndex;
_length = length;
_position = 0;
}
示例4: SmiSettersStream
internal SmiSettersStream(SmiEventSink_Default sink, ITypedSettersV3 setters, int ordinal, SmiMetaData metaData)
{
this._sink = sink;
this._setters = setters;
this._ordinal = ordinal;
this._lengthWritten = 0L;
this._metaData = metaData;
}
示例5: character
private int _peekedChar; // Current peeked character (if any)
internal SqlSequentialTextReaderSmi(SmiEventSink_Default sink, ITypedGettersV3 getters, int columnIndex, long length)
{
_sink = sink;
_getters = getters;
_columnIndex = columnIndex;
_length = length;
_position = 0;
_peekedChar = -1;
}
示例6: GetByte
internal static byte GetByte( SmiEventSink_Default sink, ITypedGettersV3 getters, int ordinal, SmiMetaData metaData ) {
ThrowIfITypedGettersIsNull( sink, getters, ordinal );
if ( CanAccessGetterDirectly( metaData, ExtendedClrTypeCode.Byte ) ) {
return GetByte_Unchecked( sink, getters, ordinal );
}
object result = GetValue( sink, getters, ordinal, metaData, null );
if (null == result) {
throw ADP.InvalidCast();
}
return (Byte)result;
}
示例7: SmiSettersStream
internal SmiSettersStream( SmiEventSink_Default sink, ITypedSettersV3 setters, int ordinal, SmiMetaData metaData ) {
Debug.Assert( null != sink );
Debug.Assert( null != setters );
Debug.Assert( 0 <= ordinal );
Debug.Assert( null != metaData );
_sink = sink;
_setters = setters;
_ordinal = ordinal;
_lengthWritten = 0;
_metaData = metaData;
}
示例8: SmiGettersStream
internal SmiGettersStream( SmiEventSink_Default sink, ITypedGettersV3 getters, int ordinal, SmiMetaData metaData ) {
Debug.Assert( null != sink );
Debug.Assert( null != getters );
Debug.Assert( 0 <= ordinal );
Debug.Assert( null != metaData );
_sink = sink;
_getters = getters;
_ordinal = ordinal;
_readPosition = 0;
_metaData = metaData;
}
示例9: SmiContextFactory
private SmiContextFactory() {
if (InOutOfProcHelper.InProc) {
Type smiLinkType = Type.GetType("Microsoft.SqlServer.Server.InProcLink, SqlAccess, PublicKeyToken=89845dcd8080cc91");
if (null == smiLinkType) {
Debug.Assert(false, "could not get InProcLink type");
throw SQL.ContextUnavailableOutOfProc(); // Must not be a valid version of Sql Server.
}
System.Reflection.FieldInfo instanceField = GetStaticField(smiLinkType, "Instance");
if (instanceField != null) {
_smiLink = (SmiLink)GetValue(instanceField);
}
else {
Debug.Assert(false, "could not get InProcLink.Instance");
throw SQL.ContextUnavailableOutOfProc(); // Must not be a valid version of Sql Server.
}
System.Reflection.FieldInfo buildVersionField = GetStaticField(smiLinkType, "BuildVersion");
if (buildVersionField != null) {
UInt32 buildVersion = (UInt32)GetValue(buildVersionField);
_majorVersion = (byte)(buildVersion >> 24);
_minorVersion = (byte)((buildVersion >> 16) & 0xff);
_buildNum = (short)(buildVersion & 0xffff);
_serverVersion = (String.Format((IFormatProvider)null, "{0:00}.{1:00}.{2:0000}", _majorVersion, (short) _minorVersion, _buildNum));
}
else {
_serverVersion = String.Empty; // default value if nothing exists.
}
_negotiatedSmiVersion = _smiLink.NegotiateVersion(SmiLink.InterfaceVersion);
bool isSupportedVersion = false;
for(int i=0; !isSupportedVersion && i<__supportedSmiVersions.Length; i++) {
if (__supportedSmiVersions[i] == _negotiatedSmiVersion) {
isSupportedVersion = true;
}
}
// Disconnect if we didn't get a supported version!!
if (!isSupportedVersion) {
_smiLink = null;
}
_eventSinkForGetCurrentContext = new SmiEventSink_Default();
}
}
示例10: SqlDataRecord
internal SqlDataRecord(SmiRecordBuffer recordBuffer, params SmiExtendedMetaData[] metaData)
{
this._columnMetaData = new SqlMetaData[metaData.Length];
this._columnSmiMetaData = new SmiExtendedMetaData[metaData.Length];
for (int i = 0; i < this._columnSmiMetaData.Length; i++)
{
this._columnSmiMetaData[i] = metaData[i];
this._columnMetaData[i] = MetaDataUtilsSmi.SmiExtendedMetaDataToSqlMetaData(this._columnSmiMetaData[i]);
}
this._eventSink = new SmiEventSink_Default();
if (InOutOfProcHelper.InProc)
{
this._recordContext = SmiContextFactory.Instance.GetCurrentContext();
}
else
{
this._recordContext = null;
}
this._recordBuffer = recordBuffer;
this._eventSink.ProcessMessagesAndThrow();
}
示例11: SetIEnumerableOfSqlDataRecord_Unchecked
private static void SetIEnumerableOfSqlDataRecord_Unchecked(
SmiEventSink_Default sink,
SmiTypedGetterSetter setters,
int ordinal,
SmiMetaData metaData,
IEnumerable<SqlDataRecord> value,
ParameterPeekAheadValue peekAhead
) {
// Get target gettersetter
setters = setters.GetTypedGetterSetter(sink, ordinal);
sink.ProcessMessagesAndThrow();
IEnumerator<SqlDataRecord> enumerator = null;
try {
// Need to copy field metadata to an array to call FillCompatibleITypeSettersFromRecord
SmiExtendedMetaData[] mdFields = new SmiExtendedMetaData[metaData.FieldMetaData.Count];
metaData.FieldMetaData.CopyTo(mdFields, 0);
SmiDefaultFieldsProperty defaults = (SmiDefaultFieldsProperty) metaData.ExtendedProperties[SmiPropertySelector.DefaultFields];
int recordNumber = 1; // used only for reporting position when there are errors.
// obtain enumerator and handle any peekahead values
if (null != peekAhead && null != peekAhead.FirstRecord) {
// hook up to enumerator
enumerator = peekAhead.Enumerator;
// send the first record that was obtained earlier
setters.NewElement(sink);
sink.ProcessMessagesAndThrow();
FillCompatibleSettersFromRecord(sink, setters, mdFields, peekAhead.FirstRecord, defaults);
recordNumber++;
}
else {
enumerator = value.GetEnumerator();
}
using (enumerator) {
while(enumerator.MoveNext()) {
setters.NewElement(sink);
sink.ProcessMessagesAndThrow();
SqlDataRecord record = enumerator.Current;
if (record.FieldCount != mdFields.Length) {
throw SQL.EnumeratedRecordFieldCountChanged(recordNumber);
}
for(int i=0; i<record.FieldCount; i++) {
if (!MetaDataUtilsSmi.IsCompatible(metaData.FieldMetaData[i], record.GetSqlMetaData(i))) {
throw SQL.EnumeratedRecordMetaDataChanged(record.GetName(i), recordNumber);
}
}
FillCompatibleSettersFromRecord(sink, setters, mdFields, record, defaults);
recordNumber++;
}
setters.EndElements(sink);
sink.ProcessMessagesAndThrow();
}
}
finally {
// Clean up!
IDisposable disposable = enumerator as IDisposable;
if (null != disposable) {
disposable.Dispose();
}
}
}
示例12: GetTimeSpan
// calling GetTimeSpan on possibly v100 SMI
internal static TimeSpan GetTimeSpan(SmiEventSink_Default sink, ITypedGettersV3 getters, int ordinal, SmiMetaData metaData, bool gettersSupportKatmaiDateTime) {
if (gettersSupportKatmaiDateTime) {
return GetTimeSpan(sink, (SmiTypedGetterSetter)getters, ordinal, metaData);
}
ThrowIfITypedGettersIsNull(sink, getters, ordinal);
object obj = GetValue(sink, getters, ordinal, metaData, null);
if (null == obj) {
throw ADP.InvalidCast();
}
return (TimeSpan) obj;
}
示例13: GetStream
internal static Stream GetStream(SmiEventSink_Default sink, ITypedGettersV3 getters, int ordinal, SmiMetaData metaData, bool bypassTypeCheck = false) {
bool isDbNull = ValueUtilsSmi.IsDBNull_Unchecked(sink, getters, ordinal);
// If a sql_variant, get the internal type
if ( !bypassTypeCheck ) {
if ((!isDbNull) && (metaData.SqlDbType == SqlDbType.Variant)) {
metaData = getters.GetVariantType(sink, ordinal);
}
// If the SqlDbType is still variant, then it must contain null, so don't throw InvalidCast
if ((metaData.SqlDbType != SqlDbType.Variant) && (!CanAccessGetterDirectly(metaData, ExtendedClrTypeCode.Stream))) {
throw ADP.InvalidCast();
}
}
byte[] data;
if (isDbNull) {
// "null" stream
data = new byte[0];
}
else {
// Read all data
data = GetByteArray_Unchecked(sink, getters, ordinal);
}
// Wrap data in pre-built object
return new MemoryStream(data, writable: false);
}
示例14: GetTextReader
internal static TextReader GetTextReader( SmiEventSink_Default sink, ITypedGettersV3 getters, int ordinal, SmiMetaData metaData ) {
bool isDbNull = ValueUtilsSmi.IsDBNull_Unchecked(sink, getters, ordinal);
// If a sql_variant, get the internal type
if ((!isDbNull) && (metaData.SqlDbType == SqlDbType.Variant)) {
metaData = getters.GetVariantType(sink, ordinal);
}
// If the SqlDbType is still variant, then it must contain null, so don't throw InvalidCast
if ((metaData.SqlDbType != SqlDbType.Variant) && (!CanAccessGetterDirectly(metaData, ExtendedClrTypeCode.TextReader))) {
throw ADP.InvalidCast();
}
string data;
if (isDbNull) {
// "null" textreader
data = string.Empty;
}
else {
// Read all data
data = GetString_Unchecked(sink, getters, ordinal);
}
// Wrap in pre-built object
return new StringReader(data);
}
示例15: GetSequentialTextReader
internal static SqlSequentialTextReaderSmi GetSequentialTextReader( SmiEventSink_Default sink, ITypedGettersV3 getters, int ordinal, SmiMetaData metaData ) {
Debug.Assert(!ValueUtilsSmi.IsDBNull_Unchecked(sink, getters, ordinal), "Should not try to get a SqlSequentialTextReaderSmi on a null column");
ThrowIfITypedGettersIsNull( sink, getters, ordinal );
if ( !CanAccessGetterDirectly( metaData, ExtendedClrTypeCode.TextReader ) ) {
throw ADP.InvalidCast();
}
// This will advance the column to ordinal
long length = GetCharsLength_Unchecked(sink, getters, ordinal);
return new SqlSequentialTextReaderSmi(sink, getters, ordinal, length);
}