예제 #1
0
        internal void UpdateTaskProcessState2(string md5, bool isProcessed, bool isProcessing, int resultCode, string resultDescription)
        {
            if (String.IsNullOrEmpty(md5))
            {
                return;
            }

            var sql = @"
                        update sm_fileinfo set 
	                        ResultCode=@ResultCode,
	                        ResultDescription=@ResultDescription,
	                        LastProcessTime=@LastProcessTime,
	                        ProcessCount=ProcessCount+1,
	                        IsProcessed=@IsProcessed,
	                        IsProcessing=@IsProcessing
	
	                        where `Md5`=@Md55"    ;

            using (DbCommand cmd = DbInstance.GetSqlStringCommand(sql))
            {
                DbInstance.AddInParameter(cmd, "ResultCode", DbType.Int64, resultCode);
                DbInstance.AddInParameter(cmd, "ResultDescription", DbType.String, resultDescription);
                DbInstance.AddInParameter(cmd, "LastProcessTime", DbType.DateTime, DateTime.Now);
                DbInstance.AddInParameter(cmd, "IsProcessed", DbType.Boolean, isProcessed);
                DbInstance.AddInParameter(cmd, "IsProcessing", DbType.Boolean, isProcessing);
                DbInstance.AddInParameter(cmd, "Md55", DbType.String, md5);

                DbInstance.ExecuteNonQuery(cmd);
            }
        }
예제 #2
0
        internal void UpdateTaskProcessState2(long id, bool isProcessed, bool isProcessing, int resultCode, string resultDescription)
        {
            var sql = @"
                        update sm_fileinfo set 
	                        ResultCode=@ResultCode,
	                        ResultDescription=@ResultDescription,
	                        LastProcessTime=@LastProcessTime,
	                        ProcessCount=ProcessCount+1,
	                        IsProcessed=@IsProcessed,
	                        IsProcessing=@IsProcessing
	
	                        where id=@id"    ;

            using (DbCommand cmd = DbInstance.GetSqlStringCommand(sql))
            {
                DbInstance.AddInParameter(cmd, "ResultCode", DbType.Int64, resultCode);
                DbInstance.AddInParameter(cmd, "ResultDescription", DbType.String, resultDescription);
                DbInstance.AddInParameter(cmd, "LastProcessTime", DbType.DateTime, DateTime.Now);
                DbInstance.AddInParameter(cmd, "IsProcessed", DbType.Boolean, isProcessed);
                DbInstance.AddInParameter(cmd, "IsProcessing", DbType.Boolean, isProcessing);
                DbInstance.AddInParameter(cmd, "id", DbType.Int64, id);

                DbInstance.ExecuteNonQuery(cmd);
            }
        }
예제 #3
0
        internal void Insert(FileTaskInfo fileTaskInfo)
        {
            var sql = "insert into sm_fileinfo (`Md5`,`FileFullPath`,`CorpId`,`FileUploadTime`) value (@Md55,@FileFullPath,@CorpId,@FileUploadTime)";

            using (DbCommand cmd = DbInstance.GetSqlStringCommand(sql))
            {
                DbInstance.AddInParameter(cmd, "Md55", DbType.String, fileTaskInfo.Md5);
                DbInstance.AddInParameter(cmd, "FileFullPath", DbType.String, fileTaskInfo.FileFullPath);
                DbInstance.AddInParameter(cmd, "FileUploadTime", DbType.DateTime, fileTaskInfo.FileUploadTime);
                DbInstance.AddInParameter(cmd, "CorpId", DbType.Int64, fileTaskInfo.CorpId);

                DbInstance.ExecuteNonQuery(cmd);
            }
        }
예제 #4
0
        internal void UpdateTaskProcessState3(
            string md5, bool isProcessed, bool isProcessing, int resultCode, string resultDescription,
            AppraiseResult result, double confidence, double hot_score, double normal_score, double porn_score
            )
        {
            if (String.IsNullOrEmpty(md5))
            {
                return;
            }

            var sql = @"
                        update sm_fileinfo set 
	                        ResultCode=@ResultCode,
	                        ResultDescription=@ResultDescription,
	                        LastProcessTime=@LastProcessTime,
	                        ProcessCount=ProcessCount+1,
	                        IsProcessed=@IsProcessed,
	                        IsProcessing=@IsProcessing,
	
	                        Result=@Result,
	                        Confidence=@Confidence,
	                        Hot_score=@Hot_score,
	                        Normal_score=@Normal_score,
	                        Porn_score=@Porn_score	
	
	                        where `Md5`=@Md55"    ;

            using (DbCommand cmd = DbInstance.GetSqlStringCommand(sql))
            {
                DbInstance.AddInParameter(cmd, "ResultCode", DbType.Int64, resultCode);
                DbInstance.AddInParameter(cmd, "ResultDescription", DbType.String, resultDescription);
                DbInstance.AddInParameter(cmd, "LastProcessTime", DbType.DateTime, DateTime.Now);
                DbInstance.AddInParameter(cmd, "IsProcessed", DbType.Boolean, isProcessed);
                DbInstance.AddInParameter(cmd, "IsProcessing", DbType.Boolean, isProcessing);
                DbInstance.AddInParameter(cmd, "Md55", DbType.String, md5);

                DbInstance.AddInParameter(cmd, "Result", DbType.Byte, result);
                DbInstance.AddInParameter(cmd, "Confidence", DbType.Double, confidence);
                DbInstance.AddInParameter(cmd, "Hot_score", DbType.Double, hot_score);
                DbInstance.AddInParameter(cmd, "Normal_score", DbType.Double, normal_score);
                DbInstance.AddInParameter(cmd, "Porn_score", DbType.Double, porn_score);

                DbInstance.ExecuteNonQuery(cmd);
            }
        }
예제 #5
0
        public void Insert(object obj, bool includeIdetityColumnInSql)
        {
            BaseEntity baseEntity = obj as BaseEntity;

            if (baseEntity != null)
            {
                if (string.IsNullOrEmpty(baseEntity.EnabledFlag))
                {
                    //插入时如果EnabledFlag为空,则默认为Y
                    baseEntity.EnabledFlag = "Y";
                }
            }

            #region 创建列集合
            TableMetaData table         = MetaDataCacheManager.GetTableMetaData(obj.GetType());
            List <string> columnNames   = new List <string>();
            List <object> columnValues  = new List <object>();
            List <DbType> columnDbTypes = new List <DbType>();

            if (table.PKColumn != null)
            {
                if (table.PKColumn.ColumnCategory != Category.IdentityKey ||
                    includeIdetityColumnInSql)
                {
                    //当存在非自动增长的主键,或者存在自动增长主键,但需要在insert语句中包含指定的列时
                    columnNames.Add(table.PKColumn.ColumnName);
                    columnValues.Add(table.PKColumn.PropertyAccessor.GetValue(obj));
                    columnDbTypes.Add(GetDbType(table.PKColumn.PropertyType));
                }
            }

            if (table.VersionColumn != null)
            {
                #region 处理版本控制列
                columnNames.Add(table.VersionColumn.ColumnName);

                //Version列赋初值
                object versionValue;
                if (table.VersionColumn.PropertyType == typeof(DateTime))
                {
                    DateTime dt = DateTime.Now;
                    versionValue = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second);
                }
                else if (table.VersionColumn.PropertyType == typeof(Int32))
                {
                    versionValue = 1;
                }
                else if (table.VersionColumn.PropertyType == typeof(Int64))
                {
                    versionValue = (long)1;
                }
                else
                {
                    throw new MappingException(string.Format("实体类型{0}中的Version列{1}的数据类型无效", obj.GetType().Name, table.VersionColumn.ColumnName));
                }
                table.VersionColumn.PropertyAccessor.SetValue(obj, versionValue);
                columnValues.Add(versionValue);
                columnDbTypes.Add(GetDbType(table.VersionColumn.PropertyType));
                #endregion
            }

            foreach (ColumnMetaData column in table.NormalColumns)
            {
                columnNames.Add(column.ColumnName);
                columnValues.Add(column.PropertyAccessor.GetValue(obj));
                columnDbTypes.Add(GetDbType(column.PropertyType));
            }
            #endregion

            #region 生成Insert Command
            string        format         = "Insert Into {0}({1}) Values({2});";
            StringBuilder tempNames      = new StringBuilder();
            StringBuilder tempParamNames = new StringBuilder();
            foreach (string columnName in columnNames)
            {
                tempNames.Append(columnName).Append(",");
                tempParamNames.Append("@").Append(columnName).Append(",");
            }
            tempNames.Remove(tempNames.Length - 1, 1);
            tempParamNames.Remove(tempParamNames.Length - 1, 1);

            DbCommand dbCommand = _DbInstance.GetSqlStringCommand(string.Format(format, table.TableName, tempNames.ToString(), tempParamNames.ToString()));

            for (int i = 0; i < columnNames.Count; i++)
            {
                _DbInstance.AddInParameter(dbCommand, "@" + columnNames[i], columnDbTypes[i], TransformToSqlParamValue(columnValues[i]));
            }
            #endregion

            //执行sql命令
            try
            {
                _DbInstance.ExecuteNonQuery(dbCommand);
            }
            catch (Exception ex)
            {
                throw new SqlException(ex.Message, LogHelper.GetSqlString(dbCommand), ex);
            }

            //取回标识值
            if (table.PKColumn != null && table.PKColumn.ColumnCategory == Category.IdentityKey && !includeIdetityColumnInSql)
            {
                object newIdValue = _DbInstance.ExecuteScalar(CommandType.Text, "SELECT CAST(@@IDENTITY as bigint) as value");
                table.PKColumn.PropertyAccessor.SetValue(obj, TransformToObjValueFromDb(newIdValue, table.PKColumn.PropertyType));
            }
        }