public int GetMovieStopTimeAndResumeData(int movieId, int userId, out string fileName, out byte[] resumeData) { // Only compare the file as only the the path is not stored. resumeData = null; StopTimeResumeData stopTimeResumeData = new StopTimeResumeData(); stopTimeResumeData.stopTime = -1; stopTimeResumeData.fileName = string.Empty; try { QueryReader<StopTimeResumeData> resume = new QueryReader<StopTimeResumeData>(string.Format("SELECT * FROM tblResume where intId={0} AND intUserId={1}", movieId, userId)); resume.OnRow += new QueryReader<StopTimeResumeData>.Row(ResumeData_OnRow); resume.Execute(_connection, stopTimeResumeData); if (stopTimeResumeData.stopTime != 0) { resumeData = new byte[stopTimeResumeData.resumeString.Length / 2]; FromHexString(stopTimeResumeData.resumeString).CopyTo(resumeData, 0); } } catch (Exception ex) { Log.Error("MyMovies::GetMovieStopTimeAndResumeData - exception err:{0} stack:{1}", ex.Message, ex.StackTrace); } fileName = stopTimeResumeData.fileName; return stopTimeResumeData.stopTime; }
/// <summary> /// This only expects a single row. Anymore is an error. /// </summary> /// <param name="row"></param> /// <param name="itemlist"></param> private void ResumeData_OnRow(System.Data.SqlClient.SqlDataReader row, StopTimeResumeData rowData) { if (rowData.stopTime != -1) { throw new ApplicationException("Too many rows returned"); } rowData.stopTime = Convert.ToInt32(row["intStopTime"]); rowData.resumeString = Convert.ToString(row["nvcResumeData"]); rowData.fileName = Convert.ToString(row["nvcFileName"]); }