internal static DriverAvailability GetDriverAvailability(IDataReader dbRdr) { DriverAvailability tmp; try { tmp = new DriverAvailability(Convert.ToDateTime(dbRdr["PlanDate"]), Convert.ToInt32(dbRdr["DriverID"]), (Convert.ToBoolean(dbRdr["DriverAvailable"]) ? true : false)); } catch (NullReferenceException ne) { throw ne; } catch (InvalidCastException ice) { throw ice; } return tmp; }
/// <summary> /// /// </summary> /// <param name="date"></param> /// <param name="driverId"></param> /// <returns></returns> internal static DriverAvailability GetDriverAvailability(DateTime date, int driverId) { DriverAvailability tmp = new DriverAvailability(); string strDBConnection = Helper.DBHelper.getDbConnectionString(); string strDate = date.ToString("yyyy-MM-dd HH:mm:ss"); string sqlQuery = "SELECT * FROM dbo.DriverAvailability WHERE PlanDate = '{0}' AND DriverID = {1}"; sqlQuery = String.Format(sqlQuery, strDate, driverId); SqlConnection dbCon = new SqlConnection(strDBConnection); SqlCommand dbCmd = new SqlCommand(); SqlTransaction tran; try { if (dbCon.State == ConnectionState.Closed) { dbCon.Open(); } tran = dbCon.BeginTransaction(); dbCmd.Connection = dbCon; dbCmd.Transaction = tran; dbCmd.CommandType = CommandType.Text; dbCmd.CommandText = sqlQuery; SqlDataReader dbRdr = dbCmd.ExecuteReader(); int iTest = 0; while (dbRdr.Read()) { tmp = GetDriverAvailability(dbRdr); iTest++; } if (iTest > 1) { tran.Rollback(); throw new Exception("Expect to get one record, but more records are got."); } tran.Commit(); } catch (SqlException se) { throw se; } catch (Exception e) { throw e; } finally { dbCon.Close(); } return tmp; }