How to get Guid aus SqlDataReader uniqueidentifier

SQL Server 2008 (version 10.50.2550).

Ich habe eine select-Abfrage eine einzelne Spalte vom Typ uniqueidentifier.

Ich will diesen in eine C# variable vom Typ Guid.

Alle der folgenden Methoden führen zu Ausnahmen.

reader ist vom Typ SqlDataReader.

using (var reader = command.ExecuteReader())
{

    if (reader.Read())
    {       
        Guid guid = reader.GetGuid(reader.GetOrdinal("integ_schemehistoryId")); //1

        Guid guid = Guid.Parse((string)reader["integ_schemehistoryId"]); //2

        Guid guid = (Guid)reader["integ_schemehistoryId"]; //3

        Guid guid = new Guid((string)reader["integ_schemehistoryId"]); //4

        Guid guid = Guid.Parse(reader["integ_schemehistoryId"].ToString()); //5
    }

}

Fehler zum 1:

System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting from a character string to uniqueidentifier.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.HasMoreRows()
   at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
   at System.Data.SqlClient.SqlDataReader.Read()
   at Simego.DataSync.DynamicColumns.DataSourceRowOverride.get_EpochSchemeHistoryID()

Fehler zum 2:

System.InvalidCastException: Unable to cast object of type 'System.Guid' to type 'System.String'.
   at Simego.DataSync.DynamicColumns.DataSourceRowOverride.get_EpochSchemeHistoryID()

Fehler zum 3:

System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting from a character string to uniqueidentifier.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.HasMoreRows()
   at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
   at System.Data.SqlClient.SqlDataReader.Read()
   at Simego.DataSync.DynamicColumns.DataSourceRowOverride.get_EpochSchemeHistoryID()

Fehler zum 4:

System.InvalidCastException: Unable to cast object of type 'System.Guid' to type 'System.String'.
   at Simego.DataSync.DynamicColumns.DataSourceRowOverride.get_EpochSchemeHistoryID()

Fehler zum 5:

System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting from a character string to uniqueidentifier.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.HasMoreRows()
   at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
   at System.Data.SqlClient.SqlDataReader.Read()
   at Simego.DataSync.DynamicColumns.DataSourceRowOverride.get_EpochSchemeHistoryID()
Welche Fehler haben Sie?
GetGuid funktionieren sollte. Ich würde raten, gegen jeder Ansatz führt, die zwei string-Konvertierungen unnötig. Bitte geben Sie die details der Fehlermeldung, die Sie bekommen beim Aufruf GetGuid.
Nichts mit Guid.Parse. Ich würde erwarten, dass Ihr letzter Versuch sein, auch okay. Jeder mal, wenn Sie sagen "ich bekomme Fehler" oder "it doesn ' T compile", in der ein Stack Overflow Frage sollten Sie angeben, was diese Fehler sind. Wie es ist, es sieht aus wie die ersten und die letzten Versionen sollten in Ordnung sein.
Sie sagten, Sie seien compile-Zeit Fehler. Das sind Ausnahmen, die auftreten können, wie execution time. Bitte vorsichtiger als präzise Informationen... haben Sie verschwendet die Zeit aller beteiligten-verfolgen mythischen compile-Zeit-Fehler.
Ich bin jetzt sehr verwirrt, wie beide Fehler 2 und 3 können auftreten. Meine Vermutung ist, dass Sie auftreten, auf verschiedene Zeilen... ich bin nicht überrascht casting zu string ausfällt, aber angesichts der Tatsache, dass der cast fehlschlägt, zu sagen, dass es eine GUID, es ist unklar, warum der cast zu Guid scheitern würden.

InformationsquelleAutor cja | 2013-07-19

Schreibe einen Kommentar