c# - How to get Guid from SqlDataReader uniqueidentifier -


sql server 2008 (version 10.50.2550).

i have select query return single column of type uniqueidentifier.

i want c# variable of type guid.

all of following methods result in exceptions.

reader of type 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     }  } 

error 1:

system.data.sqlclient.sqlexception (0x80131904): conversion failed when converting character string uniqueidentifier.    @ system.data.sqlclient.sqlconnection.onerror(sqlexception exception, boolean breakconnection)    @ system.data.sqlclient.sqlinternalconnection.onerror(sqlexception exception, boolean breakconnection)    @ system.data.sqlclient.tdsparser.throwexceptionandwarning()    @ system.data.sqlclient.tdsparser.run(runbehavior runbehavior, sqlcommand cmdhandler, sqldatareader datastream, bulkcopysimpleresultset bulkcopyhandler, tdsparserstateobject stateobj)    @ system.data.sqlclient.sqldatareader.hasmorerows()    @ system.data.sqlclient.sqldatareader.readinternal(boolean settimeout)    @ system.data.sqlclient.sqldatareader.read()    @ simego.datasync.dynamiccolumns.datasourcerowoverride.get_epochschemehistoryid() 

error 2:

system.invalidcastexception: unable cast object of type 'system.guid' type 'system.string'.    @ simego.datasync.dynamiccolumns.datasourcerowoverride.get_epochschemehistoryid() 

error 3:

system.data.sqlclient.sqlexception (0x80131904): conversion failed when converting character string uniqueidentifier.    @ system.data.sqlclient.sqlconnection.onerror(sqlexception exception, boolean breakconnection)    @ system.data.sqlclient.sqlinternalconnection.onerror(sqlexception exception, boolean breakconnection)    @ system.data.sqlclient.tdsparser.throwexceptionandwarning()    @ system.data.sqlclient.tdsparser.run(runbehavior runbehavior, sqlcommand cmdhandler, sqldatareader datastream, bulkcopysimpleresultset bulkcopyhandler, tdsparserstateobject stateobj)    @ system.data.sqlclient.sqldatareader.hasmorerows()    @ system.data.sqlclient.sqldatareader.readinternal(boolean settimeout)    @ system.data.sqlclient.sqldatareader.read()    @ simego.datasync.dynamiccolumns.datasourcerowoverride.get_epochschemehistoryid() 

error 4:

system.invalidcastexception: unable cast object of type 'system.guid' type 'system.string'.    @ simego.datasync.dynamiccolumns.datasourcerowoverride.get_epochschemehistoryid() 

error 5:

system.data.sqlclient.sqlexception (0x80131904): conversion failed when converting character string uniqueidentifier.    @ system.data.sqlclient.sqlconnection.onerror(sqlexception exception, boolean breakconnection)    @ system.data.sqlclient.sqlinternalconnection.onerror(sqlexception exception, boolean breakconnection)    @ system.data.sqlclient.tdsparser.throwexceptionandwarning()    @ system.data.sqlclient.tdsparser.run(runbehavior runbehavior, sqlcommand cmdhandler, sqldatareader datastream, bulkcopysimpleresultset bulkcopyhandler, tdsparserstateobject stateobj)    @ system.data.sqlclient.sqldatareader.hasmorerows()    @ system.data.sqlclient.sqldatareader.readinternal(boolean settimeout)    @ system.data.sqlclient.sqldatareader.read()    @ simego.datasync.dynamiccolumns.datasourcerowoverride.get_epochschemehistoryid() 

there wrong either data or sql. first , third approaches should work - i'd use first form, it's clearest in view.

but @ stack trace:

... @ system.data.sqlclient.sqldatareader.readinternal(boolean settimeout) @ system.data.sqlclient.sqldatareader.read() @ simego.datasync.dynamiccolumns.datasourcerowoverride.get_epochschemehistoryid()

note it's read() call failing, not getguid or indexer.

my guess property being fetched several times, , sometimes works - why getting cast exception in second approach - some rows, fails due problem data or sql. we've no idea data coming from, can't beyond diagnosis, that's should next.


Comments