যারা এটি ব্যবহার করতে পারেন তাদের জন্য আমার সহায়ক পদ্ধতিটি ভাগ করে নেওয়ার কথা ভেবেছিলেন:
public static class Sql
{
public static T Read<T>(DbDataReader DataReader, string FieldName)
{
int FieldIndex;
try { FieldIndex = DataReader.GetOrdinal(FieldName); }
catch { return default(T); }
if (DataReader.IsDBNull(FieldIndex))
{
return default(T);
}
else
{
object readData = DataReader.GetValue(FieldIndex);
if (readData is T)
{
return (T)readData;
}
else
{
try
{
return (T)Convert.ChangeType(readData, typeof(T));
}
catch (InvalidCastException)
{
return default(T);
}
}
}
}
}
ব্যবহার:
cmd.CommandText = @"SELECT DISTINCT [SoftwareCode00], [MachineID]
FROM [CM_S01].[dbo].[INSTALLED_SOFTWARE_DATA]";
using (SqlDataReader data = cmd.ExecuteReader())
{
while (data.Read())
{
usedBy.Add(
Sql.Read<String>(data, "SoftwareCode00"),
Sql.Read<Int32>(data, "MachineID"));
}
}
সহায়ক পদ্ধতিটি আপনার পছন্দ অনুযায়ী যে কোনও মানকে কাস্ট করে, যদি এটি কাস্ট করতে না পারে বা ডাটাবেসের মানটি NULL হয় তবে ফলাফলটি শূন্য হবে।