示例#1
0
        public override async Task <List <T> > SelectMany(Expression <Func <T, bool> > where, int skip = 0, int take = 100, bool isIncludeDeleted = false,
                                                          List <OrderByInfo <T> > orderByInfos         = null)
        {
            var sb = GetStringBuilderWithSelectFrom();

            var parameters = new List <NpgsqlParameter>();
            var prmSkip    = new NpgsqlParameter <int>(SQLConstants.SKIP_PARAMETER_NAME, NpgsqlDbType.Integer)
            {
                TypedValue = skip
            };

            parameters.Add(prmSkip);
            var prmTake = new NpgsqlParameter <int>(SQLConstants.TAKE_PARAMETER_NAME, NpgsqlDbType.Integer)
            {
                TypedValue = take
            };

            parameters.Add(prmTake);
            AppendWhere(where, parameters, sb, isIncludeDeleted);

            AppendOrderByFields(orderByInfos, sb);

            sb.Append($"{PostgreSQLConstants.LIMIT} {PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.TAKE_PARAMETER_NAME} {PostgreSQLConstants.OFFSET} {PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.SKIP_PARAMETER_NAME} {Environment.NewLine}");

            var items = await SQLExecutor.ExecuteSqlReturningEntityList <T>(sb.ToString(), parameters);

            return(items);
        }
        public override async Task <List <long> > SelectIds(Expression <Func <T, bool> > @where, bool isIncludeDeleted = false)
        {
            var sb = new StringBuilder();

            sb.Append($"{SQLConstants.SELECT} {_sqlConstants.IdFieldName}{Environment.NewLine}");
            sb.Append($"{SQLConstants.FROM} {_sqlConstants.TableFullName}{Environment.NewLine}");

            if (isIncludeDeleted)
            {
                sb.Append($"{SQLConstants.WHERE} {_entityUtils.GetFieldNameFromPropertyName(nameof(BaseEntity.IsDeleted))} = true");
            }
            else
            {
                sb.Append($"{SQLConstants.WHERE} {_entityUtils.GetFieldNameFromPropertyName(nameof(BaseEntity.IsDeleted))} = false");
            }

            var parameters = new List <NpgsqlParameter>();

            if (where != null)
            {
                var prmDictionary = new Dictionary <string, DbParameterInfo>();
                var conditions    = _expressionUtils.GetConditions(where.Body, prmDictionary);
                AddToParameters(parameters, prmDictionary);

                sb.Append($" AND {conditions}");
            }

            var result = await SQLExecutor.ExecuteSqlReturningList <long>(sb.ToString(), parameters);

            return(result);
        }
示例#3
0
        public override string doPatch(AppVersion dbVersion)
        {
            if (dbVersion != null && !dbVersion.before(this.getVersion()))
            {
                return("Don't patch " + this.version);
            }
            OleDbConnection conn = this.connPool.getConnection();
            StringBuilder   sb   = new StringBuilder();
            IList <string>  sqls = new List <string>();

            sqls.Add("ALTER TABLE project_media ADD COLUMN seq_num Integer;");
            sqls.Add("CREATE TABLE app_version (version text(255));");
            sqls.Add("INSERT INTO app_version (version) values ('1.0.0');");
            SQLExecutor     sqlExecutor = new SQLExecutor(ConnectionPool.getInstance().getConnection(), sqls);
            string          rs          = sqlExecutor.execute();
            IList <Project> projects    = projectDao.queryAll();

            foreach (Project project in projects)
            {
                MediaQueryCondition mediaQC = new MediaQueryCondition();
                mediaQC.overview_project_id = project.id;
                mediaQC.media_type          = Media.MEDIA_TYPE_PIC;
                IList <Media>  medias   = this.mediaDao.query(mediaQC);
                IList <string> mediaIds = new List <string>();
                foreach (Media m in medias)
                {
                    mediaIds.Add(m.id);
                }
                projectDao.removeAllOverviewMedias(project.id);
                projectDao.addMedias(project.id, mediaIds);
            }
            return(rs);
        }
        public override async Task <List <T> > SelectAll(Expression <Func <T, bool> > @where, Expression <Func <T, object> > orderByColumn = null, bool isAscending = true, bool isIncludeDeleted = false)
        {
            var sb = new StringBuilder();

            sb.Append($"{SQLConstants.SELECT} *{Environment.NewLine}");
            sb.Append($"{SQLConstants.FROM} {_sqlConstants.TableFullName}{Environment.NewLine}");

            var orderColumn = _sqlConstants.IdFieldName;

            if (orderByColumn != null)
            {
                orderColumn = _expressionUtils.GetField(orderByColumn.Body);
            }

            var ascOrDesc = SQLConstants.DESC;

            if (isAscending)
            {
                ascOrDesc = SQLConstants.ASC;
            }

            var parameters = new List <NpgsqlParameter>();

            AppendWhere(where, parameters, sb, isIncludeDeleted);
            sb.Append($"{SQLConstants.ORDER_BY} {orderColumn} {ascOrDesc}{Environment.NewLine}");

            var items = await SQLExecutor.ExecuteSqlReturningEntityList <T>(sb.ToString(), parameters);

            return(items);
        }
示例#5
0
            private void ExecuteScripts(IEnumerable <string> scripts, bool throwExceptions)
            {
                if (scripts == null)
                {
                    return;
                }
                var            sqlExecutor = new SQLExecutor(BootstrapServices);
                IList <string> errors      = new List <string>();

                foreach (var sql in scripts)
                {
                    try {
                        if (ExecuteScriptsWithoutTransaction)
                        {
                            sqlExecutor.ExecuteNonQueryWithoutTransaction(sql);
                        }
                        else
                        {
                            sqlExecutor.ExecuteNonQuery(sql);
                        }
                    } catch (Exception e) {
                        errors.Add(e.Message);
                    }
                }
                if (throwExceptions && errors.Count > 0)
                {
                    throw new Exception(
                              string.Format("Error executing scripts for provider '{0}' with connection string '{1}':{2}{3}",
                                            BootstrapServices.DatabaseConfiguration.DatabaseProvider.Properties.DisplayName,
                                            BootstrapServices.DatabaseConfiguration.ConnectionString,
                                            Environment.NewLine,
                                            string.Join(Environment.NewLine, errors.ToArray())));
                }
            }
示例#6
0
        public void Insert(T model)
        {
            string sql  = ORMUtil.ConstructInsertStatement(model.GetType());
            var    objs = GetStatementParamArray(model);

            SQLExecutor.ExecuteNonQuery(sql, _connectionString, objs.ToArray());
        }
示例#7
0
        private static IDatabase _OpenDatabase(string databaseId)
        {
            try
            {
                var                 info  = ORMConfig.ORMConfiguration.GetDatabaseInfo(databaseId);
                IDbConnection       cnn   = CoreFactory.CreateDbProvider(databaseId).CreateConnection(info.ConnectString);
                ISQLExecutor        exe   = new SQLExecutor(databaseId, cnn);
                IObjectMapInfoCache cache = CoreFactory.ObjectMapInfoCache;

                var           dialect = CoreFactory.CreateDialectProvider(databaseId);
                IModelSQLEmit emit    = dialect.CreateModelSQLEmit(cache);
                IMetaQuery    meta    = dialect.CreateMetaQuery(exe);

                if (cnn.State != ConnectionState.Open)
                {
                    cnn.Open();
                }

                return(new Database(exe, emit, meta));
            }
            catch (Exception ex)
            {
                throw ex.CreateWrapException <SessionException>();
            }
        }
 protected DbGenerator(EntityUtils entityUtils,
                       SQLExecutor <TConnection, TCommand, TParameter> sqlExecutorMaster,
                       SQLExecutor <TConnection, TCommand, TParameter> sqlExecutor)
 {
     _entityUtils       = entityUtils;
     _sqlExecutorMaster = sqlExecutorMaster;
     _sqlExecutor       = sqlExecutor;
 }
        private static void AssertValues <T>(IDatabaseServices services, string sqlFunctionFragment, T expectedValue)
        {
            var    sqlExecutor = new SQLExecutor(services);
            string sql         = string.Format(SQL_FORMAT, sqlFunctionFragment, MachineName);
            T      result      = sqlExecutor.ExecuteScalar(sql).RuntimeValue <T>();

            AssertEqual(expectedValue, result, string.Format(ERROR_MESSAGE_FORMAT, sqlFunctionFragment, sql));
        }
示例#10
0
        protected IList <T> ReadByKey(IDictionary <string, object> conditions)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(ORMUtil.ConstructSelectStatement(typeof(T)));
            sb.Append(ConstructWhereByDictionary(conditions));
            return(ORMUtil.ConvertDataTableToModel <T>(SQLExecutor.GetDataTable(sb.ToString(), _connectionString, conditions.Values.ToArray())));
        }
示例#11
0
        public void Update(T model)
        {
            string sql = ORMUtil.ConstructUpdateStatement(model.GetType());

            var objs = GetAllParamArrays(model);

            SQLExecutor.ExecuteNonQuery(sql, _connectionString, objs.ToArray());
        }
示例#12
0
        protected void DeleteByKey(IDictionary <string, object> conditions)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(ORMUtil.ConstructDeleteStatement(typeof(T)));
            sb.Append(ConstructWhereByDictionary(conditions));
            SQLExecutor.ExecuteNonQuery(sb.ToString(), _connectionString, conditions.Values.ToArray());
        }
        private void AssertValue <T>(IDatabaseServices services, string defaultValueName, string defaultValue, object expectedValue)
        {
            var    sqlExecutor = new SQLExecutor(services);
            string sql         = "SELECT " + defaultValue + " o1 FROM DUMMY" + MachineName;
            object result      = sqlExecutor.ExecuteScalar(sql).RuntimeValue <T>();

            AssertEqual(expectedValue, result, string.Format(errorMessageFormat, defaultValueName, sql));
        }
示例#14
0
 private void ApplicationChecksGridPrettyNames()
 {
     for (int i = 0; i < this.applicationChecksGrid.Columns.Count; i++)
     {
         string colName    = this.applicationChecksGrid.Columns[i].HeaderText;
         string prettyName = SQLExecutor.GetPrettyName("V_APPLICATION_CHECKS", colName);
         this.applicationChecksGrid.Columns[i].HeaderText = prettyName;
     }
 }
示例#15
0
 public void ApplicationsGridPrettyNames()
 {
     for (int i = 0; i < this.applicationsGrid.Rows.Count; i++)
     {
         string colName    = this.applicationsGrid.Rows[i].Cells[1].Value.ToString();
         string prettyName = SQLExecutor.GetPrettyName("V_APPLICATION_CHECKS", colName);
         this.applicationsGrid.Rows[i].Cells[0].Value = prettyName;
     }
 }
示例#16
0
 private void PrettyColumnNames()
 {
     for (int i = 0; i < this.applicationsGrid.Columns.Count; i++)
     {
         string colName    = applicationsGrid.Columns[i].HeaderText;
         string prettyName = SQLExecutor.GetPrettyName("B_APPLICATIONS", colName);
         applicationsGrid.Columns[i].HeaderText = prettyName;
     }
 }
示例#17
0
        private void LoadApplicationChecksGrid(int results)
        {
            this.applicationChecksGrid          = new DataGridView();
            this.applicationChecksGrid.ReadOnly = true;
            DataTable        dataTable  = new DataTable();
            OracleDataReader dataCursor = SQLExecutor.GetRows("V_APPLICATION_CHECKS", "APL_CODE", this.applicationsCode);

            dataTable.Load(dataCursor);
            applicationChecksGrid.DataSource = dataTable;
        }
示例#18
0
        private void LoadApplicationsGrid(int results)
        {
            this.applicationsGrid          = new DataGridView();
            this.applicationsGrid.ReadOnly = true;
            DataTable        table      = new DataTable();
            OracleDataReader dataCursor = SQLExecutor.GetResults("B_APPLICATIONS", results);

            table.Load(dataCursor);
            applicationsGrid.DataSource = table;
        }
        private void CommitChanges()
        {
            DataTable changesTable = this.checkSuitsDataTable.GetChanges();

            if (changesTable != null)
            {
                changesTable.TableName = this.checkSuitsDataTable.TableName;
                SQLExecutor.CommitChanges(changesTable);
            }
        }
        public void TestParameterPrefix(DatabaseProviderTestCase tc)
        {
            var    databaseServices = tc.Services;
            var    sqlExecutor      = new SQLExecutor(databaseServices);
            string sql = string.Format("SELECT VAL FROM DUMMY" + MachineName + " WHERE ID = {0}", sqlExecutor.GetParameterName(0, typeof(int)));

            int value = sqlExecutor.ExecuteScalar(sql, 1).RuntimeValue <int>();

            Assert.AreEqual(1, value, "ParameterPrefix didn't work as expected. SQL: " + sql);
        }
        public void TestBinaryDataDefaultValue(DatabaseProviderTestCase tc)
        {
            var databaseServices = tc.Services;
            var sqlExecutor      = new SQLExecutor(databaseServices);
            IDMLDefaultValues dmlDefaultValues = databaseServices.DMLService.DefaultValues;
            string            sql = "SELECT " + dmlDefaultValues.BinaryData + " o1 FROM DUMMY" + MachineName;

            byte[] result = sqlExecutor.ExecuteScalar(sql).RuntimeValue <byte[]>();
            AssertEqual(0, (result ?? new byte[0]).Length, string.Format(errorMessageFormat, "Null", sql));
        }
示例#22
0
        public void TestEscapeIdentifier(DatabaseProviderTestCase tc)
        {
            var             databaseServices = tc.Services;
            var             sqlExecutor      = new SQLExecutor(databaseServices);
            IDMLIdentifiers dmlIdentifiers   = databaseServices.DMLService.Identifiers;

            string sql   = "SELECT " + dmlIdentifiers.EscapeIdentifier("DUMMY" + MachineName) + "." + dmlIdentifiers.EscapeIdentifier("SELECT") + " FROM " + dmlIdentifiers.EscapeIdentifier("DUMMY" + MachineName);
            int    value = sqlExecutor.ExecuteScalar(sql).RuntimeValue <int>();

            AssertEqual(123, value, "Escape function didn't work as expected. SQL: " + sql);
        }
示例#23
0
        public LocalSQLUserBase(string databasePath, string serverString)
        {
            DatabasePath           = databasePath;
            DatabaseName           = Path.GetFileNameWithoutExtension(DatabasePath);
            ConnectionString       = "Data Source=" + serverString + ";AttachDbFilename=" + databasePath + ";Integrated Security=True";
            ServerConnectionString = "Data Source=" + serverString + ";Initial Catalog=master; Integrated Security=true";

            sqlExecutor = new SQLExecutor(ConnectionString);

            InitializeDatabase();
        }
示例#24
0
 /// <summary>
 /// Выполнить SQL скрипт
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnExecute_Click(object sender, EventArgs e)
 {
     if (SQLExecutor.ConnectionStringTest())
     {
         SQLExecutor.Execute(rtextboxSQLQuery.Text);
     }
     else
     {
         MessageBox.Show("Нет соединения с базой данных.\r\nПроверьте строку подключения.", "Невозможно выполнить запрос.", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
示例#25
0
        private int applicationsCode; // Set this if this is form has objects with parents

        private void LoadApplicationsGrid(int results)
        {
            this.applicationsGrid          = new DataGridView();
            this.applicationsGrid.ReadOnly = true;
            DataTable        dataTable  = new DataTable();
            OracleDataReader dataCursor = SQLExecutor.GetRows("B_APPLICATIONS", "APL_CODE", this.applicationsCode);

            dataTable.Load(dataCursor);
            dataTable = Utils.TransposeDataTable(dataTable); //Transpose for gridView
            applicationsGrid.DataSource = dataTable;
        }
        private static void AssertValue <T>(IDatabaseServices services, string funcName, string sql, T expectedValue, params object[] parameters)
        {
            var sqlExecutor = new SQLExecutor(services);

            if (parameters.Length != 0)
            {
                sql = string.Format(sql, parameters.Select <object, object>((o, i) => sqlExecutor.GetParameterName(i, o.GetType())).ToArray());
            }
            T result = sqlExecutor.ExecuteScalar(sql, parameters).RuntimeValue <T>();

            AssertEqual(expectedValue, result, string.Format(ERROR_MESSAGE_FORMAT, funcName, string.Join(", ", parameters.Select <object, string>(o => o.ToString()).ToArray()), sql));
        }
示例#27
0
        public ActionResult Index()
        {
            var executor = new SQLExecutor();
            var model    = new SQLResult
            {
                ConnectionString = _sqlCommandServices.GetConnectionString(),
                Histories        = _sqlCommandServices.GetHistories(),
                ReadOnly         = true,
                Tables           = executor.GetTableNames()
            };

            return(View(model));
        }
示例#28
0
        public ActionResult Index()
        {
            var executor = new SQLExecutor();
            var model    = new SQLResult
            {
                ConnectionString = _sqlCommandService.GetConnectionString(),
                Histories        = _sqlCommandService.GetHistories(EzCMSContants.DefaultHistoryStart, EzCMSContants.DefaultHistoryLength),
                ReadOnly         = true,
                Tables           = executor.GetTableNames()
            };

            return(View(model));
        }
示例#29
0
        public static void IntialDB()
        {
            string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
            string sql = @"if not exists (select * from dbo.sysobjects where id = object_id(N'[Employee]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE Employee(
	Id INT IDENTITY NOT NULL PRIMARY KEY ,
	FirstName VARCHAR(100) NOT NULL,
	MiddleName VARCHAR(100)  NULL,
	LastName VARCHAR(100)  NULL,
	DateOfBirth DATETIME NOT NULL
);";

            SQLExecutor.ExecuteNonQuery(sql, connectionString);
        }
示例#30
0
        public override async Task <List <T> > SelectAll(Expression <Func <T, bool> > where, bool isIncludeDeleted = false, List <OrderByInfo <T> > orderByInfos = null)
        {
            var sb = GetStringBuilderWithSelectFrom();

            var parameters = new List <NpgsqlParameter>();

            AppendWhere(where, parameters, sb, isIncludeDeleted);

            AppendOrderByFields(orderByInfos, sb);

            var items = await SQLExecutor.ExecuteSqlReturningEntityList <T>(sb.ToString(), parameters);

            return(items);
        }