我有以下功能:的DataTable轉換字段值到T
public T GetScalar<T>(string sql, T defaultValue, SQLParam[] sqlParams = null)
{
DataTable dt = GetDataTable(sql, sqlParams);
if (dt.Rows.Count == 0) return defaultValue;
else
{
try
{
object tmp = dt.Rows[0][0];
return (T)tmp;
}
catch { return defaultValue; }
}
}
我得到了InvalidCastException
。
在調試過程中,我看到tmp
的值是3,T
的類型是int
。
這裏有什麼問題?
編輯
一點背景:這用於在MySQL工作。我現在已經轉移到SQLServer(謝天謝地),但現在這個代碼失敗了。
什麼是'tmp.GetType()'? – Rawling
爲什麼首先要聲明對象?爲什麼不只是'T tmp'? –
如果你只需要一個標量,爲什麼你首先要加載一個'DataTable'? (這完全是出於好奇) –