我有一個Sql工具類,其中包含許多有關SQL查詢的方便方法。 這個類包含以下方法:通用返回類型和不可爲空對象
public static T ExecuteScalar<T>(
string query,
SqlConnection connection,
params SqlParameter[] parameters)
where T : class, new()
{
SqlCommand command =
CreateCommand(query, connection, parameters);
return command.ExecuteScalar() as T;
}
是否有可能返回例如Guid
對象或其他非空的類。
事情是這樣的:
Guid result =
SqlUtils.ExecuteScalar<Guid>(
@"SELECT [Id] FROM [dbo].[MyTable]
WHERE [Column1] = @Param1",
connection,
new SqlParameter("@Param1", "someValue"));
您如何期望它將對象投射到Guid?它最初是Guid嗎?它是如何保存的? – SimpleVar
如果它只是ID列中的一個Guid字符串,請嘗試'var guid = new Guid(SqlUtils.ExecuteScalar(...));' –
SimpleVar
也許我在這裏丟失了一些東西,但我認爲ExecuteScalar的要點是返回一個單一的價值。這意味着它從來不是一個複雜的類(假設你不把字符串和小數作爲類)。這意味着它總是返回一個int,guid,datetime等等。ExecuteScalar要求T成爲一個類的重點是什麼。它使ExecuteScalar方法變得毫無價值。唯一的情況是如果結果返回xml。 XML可以被串行化成一個類。 –