Public void IntervalExample(TdCommand cmd, Int32 task)
{
cmd.Parameters.Clear();
cmd.CommandText = "SELECT StartDate, StartTime, TaskLen " +
"FROM Schedule " +
"WHERE Task = ?";
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(null, TdType.Integer, 4,
ParameterDirection.Input, true, 0, 0, null,
DataRowVersion.Default, task);
Int32 row = 0;
TdDate [] startDate;
TdTimestamp [] startTime;
TdIntervalSecond [] taskLen;
using (TdDataReader dr = cmd.ExecuteReader())
{
startDate = new TdDate[dr.RecordsReturned];
startTime = new TdTimestamp[dr.RecordsReturned];
taskLen = new TdIntervalSecond [dr.RecordsReturned];
// Specifying an interval of 2 hours, 5 minutes
// with an second precision of 4 and scale of 0
TdIntervalSecond leaseReturnExtension = new TdIntervalSecond(7500, 0, 4, 0);
while (dr.Read())
{
// Retrieving the dates
startDate[row] = dr.GetTdDate(0);
startTime[row] = dr.GetTimestamp(1);
taskLen[row] = dr.GetTdIntervalSecond(2);
// Adding extension to the lease return
startTime[row] = startTime[row] + leaseReturnExtension;
// Adding extension to the lease length;
taskLen[row] = taskLen[row] + leaseReturnExtension;
row++;
}
}
cmd.Parameters.Clear();
cmd.CommandText = "UPDATE Schedule " +
"SET StartTime = ?, TaskLen = ? " +
"WHERE Task = ?";
cmd.Parameters.Add(null, TdType.Timestamp, 0,
ParameterDirection.Input, true, 0, 0, null,
DataRowVersion.Default, null);
cmd.Parameters.Add(null, TdType.IntervalSecond, 0,
ParameterDirection.Input, true, 0, 0, null,
DataRowVersion.Default, null);
cmd.Parameters.Add(null, TdType.Integer, 4,
ParameterDirection.Input, true, 0, 0, null,
DataRowVersion.Default, task);
row--;
while(row >= 0)
{
cmd.Parameters[0].Value = startTime[row];
cmd.Parameters[1].Value = taskLen[row];
cmd.Parameters[2].Value = task;
cmd.ExecuteNonQuery();
row--;
}
}