Exemple #1
0
        /// <summary>
        /// Добавляет запись с признаком уникальности обработанного файла
        /// </summary>
        /// <param name="taskName">Имя задачи</param>
        /// <param name="filePath">Путь к файлу</param>
        public static void CreateFileFingerprint(string taskName, string filePath)
        {
            string   fileName = Path.GetFileName(filePath);
            FileInfo fileInfo = new FileInfo(filePath);
            string   hash     = Pbkdf2Cryptography.GetMD5Hash(File.ReadAllBytes(filePath));

            string connStr = "INSERT INTO " + taskName +
                             " (FILENAME, HASH, OPERATIONDATE, MODIFYDATE) " +
                             string.Format("VALUES('{0}','{1}','{2}','{3}');", fileName, hash,
                                           DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), fileInfo.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss"));

            using (FbConnection connection = new FbConnection(ConnectionString)) {
                connection.Open();

                using (FbCommand command = new FbCommand(connStr, connection)) {
                    using (FbTransaction transaction = connection.BeginTransaction()) {
                        command.Transaction = transaction;
                        command.ExecuteNonQuery();

                        transaction.Commit();
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Проверяет наличие дубликата файла
        /// </summary>
        /// <param name="taskName">Имя задачи</param>
        /// <param name="filePath">Путь к файлу</param>
        /// <returns></returns>
        public static bool CheckForDuplicate(string taskName, string filePath)
        {
            string fileName = Path.GetFileName(filePath);
            string hash     = Pbkdf2Cryptography.GetMD5Hash(File.ReadAllBytes(filePath));
            string connStr  = @"SELECT 1 FROM " + taskName +
                              @" WHERE FILENAME = '" + fileName + "' " +
                              @"AND HASH = '" + hash + "'";
            object result;

            using (FbConnection connection = new FbConnection(ConnectionString)) {
                connection.Open();

                using (FbCommand command = new FbCommand(connStr, connection)) {
                    using (FbTransaction transaction = connection.BeginTransaction()) {
                        command.Transaction = transaction;
                        result = command.ExecuteScalar();

                        transaction.Rollback();
                    }
                }
            }

            return(result != null);
        }