Ejemplo n.º 1
0
        public override SqlString Create(Database db)
        {
            var parameterPrefix = PersistenceManagerHelper.GetSqlParamsPrefix(db);
            var insertSql       = string.Empty;
            var valuesSql       = string.Empty;

            foreach (var column in BuilderData.Columns)
            {
                if (insertSql.Length > 0)
                {
                    insertSql += ",";
                    valuesSql += ",";
                }

                insertSql += column.ColumnName;
                valuesSql += parameterPrefix + column.ParameterName;
            }

            var sql = string.Format("insert into {0}({1}) values({2})",
                                    BuilderData.EntityMapping.MapTable,
                                    insertSql,
                                    valuesSql);
            SqlString sqlInfo = new SqlString(sql, BuilderData.Parameters);

            return(sqlInfo);
        }
Ejemplo n.º 2
0
        protected TReturn ExecuteReturnValue <TReturn>(Func <Database, DbCommand, TReturn> executeFunc)
        {
            try {
                var sqlGenerator = CreateSqlGenerator();
                var db           = MB.Orm.Persistence.DatabaseHelper.CreateDatabase();
                var dbType       = MB.Orm.Persistence.DatabaseConfigurationScope.GetDatabaseType(db);
                var persistence  = new PersistenceManagerHelper();
                var sqlStr       = sqlGenerator.Create(db);
                var dbCmd        = persistence.GetSqlStringCommand(db, sqlStr.SqlStr);
                foreach (var par in sqlStr.ParamFields)
                {
                    var val = persistence.ConvertToRealDbValue(db, par.Value, par.DbType);
                    PersistenceManagerHelper.NewInstance.AddParamInfoToDbCommand(db, dbCmd, par, par.Value);
                }

                string cmdMsg = MB.Orm.Persistence.DbCommandExecuteTrack.Instance.CommandToTrackMessage(db, dbCmd);
                MB.Util.TraceEx.Write("正在执行:" + cmdMsg);

                //if (DatabaseConnectionContext.Current != null && DatabaseConnectionContext.Current.Connection != null)
                //    dbCmd.Connection = DatabaseConnectionContext.Current.Connection;
                using (new Util.MethodTraceWithTime(true, cmdMsg))
                {
                    return(executeFunc(db, dbCmd));
                }
            }
            catch (MB.Util.APPException appEx) {
                throw appEx;
            }
            catch (Exception ex) {
                throw new MB.Util.APPException("通过SmartBuilder 执行数据库操作有误,请检查语法是否正确" + ex.Message, Util.APPMessageType.SysDatabaseInfo);
            }
        }
Ejemplo n.º 3
0
        public override SqlString Create(Database db)
        {
            var parameterPrefix = PersistenceManagerHelper.GetSqlParamsPrefix(db);
            var querySql        = string.Empty;

            var whereSql = string.Empty;

            foreach (var column in BuilderData.Where)
            {
                if (whereSql.Length > 0)
                {
                    whereSql += " and ";
                }

                whereSql += string.Format("{0} = {1}{2}",
                                          column.ColumnName,
                                          parameterPrefix,
                                          column.ParameterName);
            }

            var databaseType = MB.Orm.Persistence.DatabaseConfigurationScope.GetDatabaseType(db);

            if (databaseType == DatabaseType.MSSQLServer)
            {
                querySql = "top 1 1";
            }
            else if (databaseType == DatabaseType.Oracle)
            {
                querySql = "1";
                if (whereSql.Length > 0)
                {
                    whereSql += " and ";
                }
                whereSql += " rownum <=1";
            }
            else
            {
                throw new MB.Util.APPException(string.Format("在进行SmartDAL Exists 时目前还不支持 {0}", databaseType.ToString()), Util.APPMessageType.SysErrInfo);
            }


            var sql = string.Format("select {0} from {1} where {2}",
                                    querySql,
                                    BuilderData.EntityMapping.MapTable,
                                    whereSql);

            SqlString sqlInfo = new SqlString(sql, BuilderData.Parameters);

            return(sqlInfo);
        }
Ejemplo n.º 4
0
        //创建DBCommand 对象.
        public System.Data.Common.DbCommand createDbCommandByXml(Database db, string xmlFileName, string sqlName, IList lstData)
        {
            SimulatedOracleHelper oh = new SimulatedOracleHelper();

            MB.Orm.Persistence.PersistenceManagerHelper pm = new PersistenceManagerHelper();
            var dbType = MB.Orm.Persistence.DatabaseHelper.GetDatabaseType(db);
            List <System.Data.Common.DbCommand> dbCmds = new List <System.Data.Common.DbCommand>();

            MB.Orm.DbSql.SqlString sqlStr = this.GetXmlSqlString(db, xmlFileName, sqlName);

            IList <SqlParamInfo> tPars = sqlStr.ParamFields;

            if (_PersistenceManagerHelper == null)
            {
                _PersistenceManagerHelper = new PersistenceManagerHelper();
            }

            var dbCmd = oh.CreateOracleCommand(_PersistenceManagerHelper.ReplaceSqlParamsByDatabaseType(db, sqlStr.SqlStr));// new OracleCommand(_PersistenceManagerHelper.ReplaceSqlParamsByDatabaseType(db, sqlStr.SqlStr));
            //dbCmd.ArrayBindCount = lstData.Count;
            List <SqlParamInfo> overcastPars = new List <SqlParamInfo>();

            oh.SetCommandArrayBindCount(dbCmd, lstData.Count);

            Type oracleDbType = oh.GetOracleDbType();
            Dictionary <string, ArrayList> pValues = paramValues(db, tPars, lstData);

            for (int i = 0; i < tPars.Count; i++)
            {
                SqlParamInfo parInfo = tPars[i];
                if (parInfo.Overcast)
                {
                    dbCmd.CommandText = pm.ReaplaceSpecString(dbCmd.CommandText, MB.Orm.DbSql.SqlShareHelper.ORACLE_PARAM_PREFIX + pm.CreateParName(db, parInfo.Name), pValues[parInfo.Name][0] == null ? null : pValues[parInfo.Name][0].ToString());
                }
                else
                {
                    var oraInfo = oh.CreateOracleParameter(parInfo.Name, convertToOracleType(oh, oracleDbType, parInfo.DbType));// new OracleParameter(parInfo.Name, convertToOracleType(parInfo.DbType));
                    oraInfo.Direction = System.Data.ParameterDirection.Input;
                    oraInfo.Value     = pValues[parInfo.Name].ToArray();
                    dbCmd.Parameters.Add(oraInfo);
                }
            }

            return(dbCmd);
        }
Ejemplo n.º 5
0
        public override SqlString Create(Database db)
        {
            var parameterPrefix = PersistenceManagerHelper.GetSqlParamsPrefix(db);
            var setSql          = string.Empty;

            foreach (var column in BuilderData.Columns)
            {
                if (setSql.Length > 0)
                {
                    setSql += ", ";
                }

                setSql += string.Format("{0} = {1}{2}",
                                        column.ColumnName,
                                        parameterPrefix,
                                        column.ParameterName);
            }

            var whereSql = string.Empty;

            foreach (var column in BuilderData.Where)
            {
                if (whereSql.Length > 0)
                {
                    whereSql += " and ";
                }

                whereSql += string.Format("{0} = {1}{2}",
                                          column.ColumnName,
                                          parameterPrefix,
                                          column.ParameterName);
            }

            var sql = string.Format("update {0} set {1} where {2}",
                                    BuilderData.EntityMapping.MapTable,
                                    setSql,
                                    whereSql);

            SqlString sqlInfo = new SqlString(sql, BuilderData.Parameters);

            return(sqlInfo);
        }