コード例 #1
1
 /// <summary>
 /// TODO: fill in whether it should retry.
 /// 
 /// </summary>
 /// <param name="ulex"></param>
 /// <param name="cmd"></param>
 /// <returns></returns>
 protected bool ShouldRetry(SAException ulex, SACommand cmd)
 {
     return false;
 }
コード例 #2
0
        public SADataReader ExecuteSPReader(string procedureName)
        {
            SADataReader reader;
            SACommand    cmd = new SACommand();

            this.Connect();

            cmd.CommandTimeout = this.CommandTimeout;
            cmd.CommandText    = procedureName;
            cmd.Connection     = _connection;
            if (_transaction != null)
            {
                cmd.Transaction = _transaction;
            }
            cmd.CommandType = CommandType.StoredProcedure;
            this.CopyParameters(cmd);

            CommandBehavior behavior = CommandBehavior.Default;

            if (this.AutoCloseConnection)
            {
                behavior = behavior | CommandBehavior.CloseConnection;
            }
            if (_isSingleRow)
            {
                behavior = behavior | CommandBehavior.SingleRow;
            }

            reader = cmd.ExecuteReader(behavior);

            _parameterCollection = cmd.Parameters;
            cmd.Dispose();

            return(reader);
        }
コード例 #3
0
        public void ExecuteSP(string procedureName)
        {
            SACommand cmd = new SACommand();

            this.Connect();

            cmd.CommandTimeout = this.CommandTimeout;
            cmd.CommandText    = procedureName;
            cmd.Connection     = _connection;
            if (_transaction != null)
            {
                cmd.Transaction = _transaction;
            }
            cmd.CommandType = CommandType.StoredProcedure;
            this.CopyParameters(cmd);

            cmd.ExecuteNonQuery();

            _parameterCollection = cmd.Parameters;
            cmd.Dispose();

            if (this.AutoCloseConnection)
            {
                this.Disconnect();
            }
        }
コード例 #4
0
        public void ExecuteSPDataSet(ref DataSet dataSet, string procedureName, string tableName)
        {
            SACommand cmd = new SACommand();

            this.Connect();
            SADataAdapter da = new SADataAdapter();

            cmd.CommandTimeout = this.CommandTimeout;
            cmd.CommandText    = procedureName;
            cmd.Connection     = _connection;
            if (_transaction != null)
            {
                cmd.Transaction = _transaction;
            }
            cmd.CommandType = CommandType.StoredProcedure;
            this.CopyParameters(cmd);

            da.SelectCommand = cmd;

            da.Fill(dataSet, tableName);

            _parameterCollection = cmd.Parameters;
            da.Dispose();
            cmd.Dispose();

            if (this.AutoCloseConnection)
            {
                this.Disconnect();
            }
        }
コード例 #5
0
        public void ExecuteSqlDataSet(ref DataSet dataSet, string sql, string tableName)
        {
            SACommand cmd = new SACommand();

            this.Connect();
            SADataAdapter da = new SADataAdapter();

            cmd.CommandTimeout = this.CommandTimeout;
            cmd.Connection     = _connection;
            if (_transaction != null)
            {
                cmd.Transaction = _transaction;
            }
            cmd.CommandText = sql;
            cmd.CommandType = CommandType.Text;

            da.SelectCommand = cmd;

            da.Fill(dataSet, tableName);
            da.Dispose();
            cmd.Dispose();

            if (this.AutoCloseConnection)
            {
                this.Disconnect();
            }
        }
コード例 #6
0
        public DataSet ExecuteSqlDataSet(string sql)
        {
            SACommand cmd = new SACommand();

            this.Connect();
            SADataAdapter da = new SADataAdapter();
            DataSet       ds = new DataSet();

            cmd.CommandTimeout = this.CommandTimeout;
            cmd.Connection     = _connection;
            if (_transaction != null)
            {
                cmd.Transaction = _transaction;
            }
            cmd.CommandText = sql;
            cmd.CommandType = CommandType.Text;

            da.SelectCommand = cmd;

            da.Fill(ds);
            da.Dispose();
            cmd.Dispose();

            if (this.AutoCloseConnection)
            {
                this.Disconnect();
            }

            return(ds);
        }
コード例 #7
0
        public SADataReader ExecuteSAReader(string sql)
        {
            SADataReader reader;
            SACommand    cmd = new SACommand();

            this.Connect();

            // Order of commands is important for parameer substitution
            cmd.CommandType    = CommandType.Text;
            cmd.CommandTimeout = this.CommandTimeout;
            this.CopyParameters(cmd);
            cmd.CommandText = sql;
            cmd.Connection  = _connection;
            if (_transaction != null)
            {
                cmd.Transaction = _transaction;
            }

            CommandBehavior behavior = CommandBehavior.Default;

            if (this.AutoCloseConnection)
            {
                behavior = behavior | CommandBehavior.CloseConnection;
            }
            if (_isSingleRow)
            {
                behavior = behavior | CommandBehavior.SingleRow;
            }

            reader = cmd.ExecuteReader(behavior);
            cmd.Dispose();

            return(reader);
        }
コード例 #8
0
 private void CopyParameters(SACommand command)
 {
     for (int i = 0; i < _parameters.Count; i++)
     {
         command.Parameters.Add(_parameters[i]);
     }
 }
コード例 #9
0
        static public SACommand BuildStoredProcUpdateCommand(esDataRequest request)
        {
            Dictionary <string, SAParameter> types = Cache.GetParameters(request);

            SACommand cmd = new SACommand();

            if (request.CommandTimeout != null)
            {
                cmd.CommandTimeout = request.CommandTimeout.Value;
            }

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = CreateFullSPName(request, request.ProviderMetadata.spUpdate);

            PopulateStoredProcParameters(cmd, request);

            foreach (esColumnMetadata col in request.Columns)
            {
                if (col.IsComputed || col.IsConcurrency || col.IsEntitySpacesConcurrency)
                {
                    SAParameter p = types[col.Name];
                    p           = cmd.Parameters[p.ParameterName];
                    p.Direction = ParameterDirection.InputOutput;
                }
            }

            return(cmd);
        }
コード例 #10
0
        public JsonResult mostrarListaPartidos()
        {
            SAConnection conn = new SAConnection("Data Source=eleicoes_conn");

            try
            {
                conn.Open();

                SACommand cmd = new SACommand("listarPartidos", conn);
                cmd.CommandType = CommandType.StoredProcedure;

                SADataReader   reader        = cmd.ExecuteReader();
                List <Partido> listaPartidos = new List <Partido>();
                while (reader.Read())
                {
                    listaPartidos.Add(new Partido {
                        id = reader.GetInt32(0), nome = reader.GetString(1)
                    });
                }

                reader.Close();
                conn.Close();

                return(Json(listaPartidos));
            }
            catch (SAException ex)
            {
                conn.Close();
                return(Json(false));
            }
        }
コード例 #11
0
        public SACommand CreateAddProductCommand(SAConnection conn, SATransaction transaction)
        {
            var cmd = new SACommand(_sql, conn, transaction);
            CreateParameters(cmd);

            return cmd;
        }
コード例 #12
0
        public DataTable ExecuteParamerizedSelectCommand(string CommandName, CommandType cmdType, SAParameter[] param)
        {
            SACommand cmd   = null;
            DataTable table = new DataTable();

            cmd             = _connection.CreateCommand();
            cmd.CommandType = cmdType;
            cmd.CommandText = CommandName;
            cmd.Parameters.AddRange(param);

            try
            {
                _connection.Open();

                SADataAdapter da = null;
                using (da = new SADataAdapter(cmd))
                {
                    da.Fill(table);
                }
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            finally
            {
                cmd.Dispose();
                cmd = null;
                _connection.Close();
            }
            return(table);
        }
コード例 #13
0
        /// <summary>
        /// Calls a stored procedure if needed.
        /// </summary>
        /// <param name="statementProcedureName">Stored procedure name</param>
        /// <param name="statementProcList">List of parameters for a stored procedure</param>
        public override void CallStoredProcedure(string statementProcedureName, IList <string> statementProcList)
        {
            string sqlString = "";
            string sqlParams = "";

            foreach (string param in statementProcList)
            {
                if (!string.IsNullOrEmpty(sqlString))
                {
                    sqlString = sqlString + ",";
                }
                sqlParams = sqlParams + "'" + param + "'";
            }
            sqlString = "call " + statementProcedureName + " (" + sqlParams + ")";
            try
            {
                SACommand command = CommandTransaction(sqlString);

                if (command != null)
                {
                    command.ExecuteScalar();
                }
            }
            catch (System.Exception e)
            {
                Rollback();
                string msg = "DataAccessLayer Error: " + ShowMessage(e.Message);
                throw new System.Exception(msg);
            }
            finally
            {
                CloseInTransaction();
            }
        }
コード例 #14
0
        public override DataTable ExecuteSelectCommand(string CommandName, CommandType cmdType)
        {
            SACommand cmd   = null;
            DataTable table = new DataTable();

            cmd = _connection.CreateCommand();

            cmd.CommandType = cmdType;
            cmd.CommandText = CommandName;

            try
            {
                if (_connection.State != ConnectionState.Open)
                {
                    _connection.Open();
                }
                SADataAdapter da = null;
                using (da = new SADataAdapter(cmd))
                {
                    da.Fill(table);
                }
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            finally
            {
                cmd.Dispose();
                cmd = null;
                _connection.Close();
            }
            return(table);
        }
コード例 #15
0
        private SADataAdapter CreateDataAdapter(string sqlQuery)
        {
            SADataAdapter dta = null;

            lock (dataAdapterLock)
            {
                try
                {
                    if (_transaction == null)
                    {
                        Open();
                        _command = new SACommand(sqlQuery, _connection);
                    }
                    else
                    {
                        _command = new SACommand(sqlQuery, _connection, _transaction);
                    }
                    dta = new SADataAdapter(_command);
                }
                catch (System.Exception e)
                {
                    if (_transaction != null)
                    {
                        _transaction.Rollback();
                    }
                    string msg = "Loading dataset error :" + e.Message;
                    throw new System.Exception(msg);
                }
            }
            return(dta);
        }
コード例 #16
0
        public JsonResult guardarPartido(string nomePartido)
        {
            SAConnection conn = new SAConnection("Data Source=eleicoes_conn");

            try
            {
                conn.Open();


                SACommand cmd = new SACommand("CALL guardarPartido(\"nomePartido\" = ?)", conn);
                cmd.CommandType = CommandType.Text;

                SAParameter param = cmd.CreateParameter();
                param.SADbType  = SADbType.Text;
                param.Direction = ParameterDirection.Input;
                param.Value     = nomePartido;
                cmd.Parameters.Add(param);

                SADataReader reader = cmd.ExecuteReader();
                reader.Close();
                conn.Close();
                return(Json(true));
            }
            catch (SAException ex)
            {
                //Console.WriteLine(ex.Errors[0].Source + " : " + ex.Errors[0].Message + " (" + ex.Errors[0].NativeError.ToString() + ")", "Failed to connect");​
                conn.Close();
                return(Json(false));
            }
        }
コード例 #17
0
        public bool inserirCandidatoEleicao(int idEleicao, int idCandidato)
        {
            SAConnection conn = new SAConnection("Data Source=eleicoes_conn");

            try
            {
                conn.Open();
                SACommand cmd = new SACommand("CALL inserirCandidatoEleicao(\"idCandidato\" = ?, \"idEleicao\"= ? )", conn);
                cmd.CommandType = CommandType.Text;

                SAParameter param1 = cmd.CreateParameter();
                param1.SADbType  = SADbType.Integer;
                param1.Direction = ParameterDirection.Input;
                param1.Value     = idCandidato;
                cmd.Parameters.Add(param1);


                SAParameter param2 = cmd.CreateParameter();
                param2.SADbType  = SADbType.Integer;
                param2.Direction = ParameterDirection.Input;
                param2.Value     = idEleicao;
                cmd.Parameters.Add(param2);


                SADataReader reader = cmd.ExecuteReader();

                return(true);
            }
            catch (Exception ex)
            {
                conn.Close();
                return(false);
            }
        }
コード例 #18
0
        static public void PopulateStoredProcParameters(SACommand cmd, esDataRequest request)
        {
            Dictionary <string, SAParameter> types = Cache.GetParameters(request);

            SAParameter p;

            foreach (esColumnMetadata col in request.Columns)
            {
                p = types[col.Name];
                p = CloneParameter(p);
                p.SourceVersion = DataRowVersion.Current;

                if (p.SADbType == SADbType.TimeStamp)
                {
                    p.Direction = ParameterDirection.InputOutput;
                }

                if (col.IsComputed && col.CharacterMaxLength > 0)
                {
                    p.Size = (int)col.CharacterMaxLength;
                }

                cmd.Parameters.Add(p);
            }
        }
コード例 #19
0
        public ActionResult electionMain()
        {
            if (Session["UserID"] != null)
            {
                SAConnection conn = new SAConnection("Data Source=eleicoes_conn");

                conn.Open();

                SACommand cmd = new SACommand("listarCandidatos", conn);
                cmd.CommandType = CommandType.StoredProcedure;

                SADataReader     reader          = cmd.ExecuteReader();
                List <Candidato> listaCandidatos = new List <Candidato>();
                while (reader.Read())
                {
                    listaCandidatos.Add(new Candidato {
                        id = reader.GetInt32(0), nomeCandidato = reader.GetString(1), nomePartido = reader.GetString(2)
                    });
                }

                reader.Close();
                conn.Close();

                ViewBag.listaCandidatos = listaCandidatos;


                return(View());
            }
            else
            {
                return(RedirectToAction("Login"));
            }
        }
コード例 #20
0
        public JsonResult listarCaderno()
        {
            SAConnection conn = new SAConnection("Data Source=eleicoes_conn");

            try
            {
                conn.Open();

                SACommand cmd = new SACommand("listarCaderno", conn);
                cmd.CommandType = CommandType.StoredProcedure;

                SADataReader            reader            = cmd.ExecuteReader();
                List <cadernoEleitoral> cadernoEleitorals = new List <cadernoEleitoral>();
                while (reader.Read())
                {
                    cadernoEleitorals.Add(new cadernoEleitoral {
                        id = Int32.Parse(reader.GetString(0)), periodo = reader.GetString(1)
                    });
                }

                reader.Close();
                conn.Close();

                return(Json(cadernoEleitorals));
            }
            catch (SAException ex)
            {
                conn.Close();
                return(Json(false));
            }
        }
コード例 #21
0
        static public SACommand BuildDynamicDeleteCommand(esDataRequest request, esEntitySavePacket packet)
        {
            Dictionary <string, SAParameter> types = Cache.GetParameters(request);

            SACommand cmd = new SACommand();

            if (request.CommandTimeout != null)
            {
                cmd.CommandTimeout = request.CommandTimeout.Value;
            }

            string sql = "DELETE FROM " + CreateFullName(request) + " ";

            string comma = String.Empty;

            comma = String.Empty;
            sql  += " WHERE ";
            foreach (esColumnMetadata col in request.Columns)
            {
                if (col.IsInPrimaryKey || col.IsEntitySpacesConcurrency)
                {
                    SAParameter p = types[col.Name];
                    cmd.Parameters.Add(CloneParameter(p));

                    sql  += comma;
                    sql  += Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose + " = " + p.ParameterName;
                    comma = " AND ";
                }
            }

            cmd.CommandText = sql;
            cmd.CommandType = CommandType.Text;
            return(cmd);
        }
コード例 #22
0
        // Execute a SQL select statement using an existing DB connection
        internal static bool ExecuteSelect(SAConnection _conn, string SqlStatement, bool ErrMsg,
                                           string table, string CallingClass, string CallingFunction,
                                           out SADataReader myDataReader)
        {
            bool RetVal = true;

            myDataReader = null;

            try
            {
                SACommand cmd = new SACommand(SqlStatement, _conn);
                myDataReader = cmd.ExecuteReader();
            }
            catch (Exception ex)
            {
                RetVal = false;
                if (ErrMsg)
                {
                    string err = String.Format(StringTable.GetString("DatabaseError"),
                                               table, ex.Message.ToString() + "(" + SqlStatement + ")");
                    ServiceMessages.InsertRec(MainClass.AppName, CallingClass, CallingFunction, err);
                }
            }

            return(RetVal);
        }
コード例 #23
0
        public int ExecuteNonSPQuery(string _sql, List <SQLParam> _parameters)
        {
            int          _retValue = -1;
            SAConnection _conn     = null;

            try
            {
                _conn = this.CreateConnection();

                SACommand _cmd = this.CreateCommand(CommandType.Text, _conn, _sql, _parameters);

                _retValue = _cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                string _err = string.Format("SQLAnywhereProvider.ExecuteNonSPQuery error: {0}", ex);
                throw new Exception(_err);
            }
            finally
            {
                this.Dispose(_conn);
            }

            return(_retValue);
        }
コード例 #24
0
        public DataTable GetData(CommandType type, string sql, List <SQLParam> parms)
        {
            DataTable dt = new DataTable();

            SAConnection _conn = null;

            try
            {
                _conn = this.CreateConnection();

                SACommand _cmd = this.CreateCommand(type, _conn, sql, parms);

                SADataAdapter _adp = new SADataAdapter(_cmd);
                _adp.Fill(dt);
            }
            catch (Exception ex)
            {
                string _err = string.Format("SQLAnywhereProvider.ExecuteDataSet error: {0}", ex);
                throw new Exception(_err);
            }
            finally
            {
                this.Dispose(_conn);
            }

            return(dt);
        }
コード例 #25
0
        public DataSet ExecuteDataSet(string _procName, List <SQLParam> _parameters)
        {
            DataSet _ds = new DataSet();

            SAConnection _conn = null;

            try
            {
                _conn = this.CreateConnection();

                SACommand _cmd = this.CreateCommand(CommandType.Text, _conn, _procName, _parameters);

                SADataAdapter _adp = new SADataAdapter(_cmd);
                _adp.Fill(_ds);
            }
            catch (Exception ex)
            {
                string _err = string.Format("SQLAnywhereProvider.ExecuteDataSet error: {0}", ex);
                throw new Exception(_err);
            }
            finally
            {
                this.Dispose(_conn);
            }

            return(_ds);
        }
コード例 #26
0
        /// <summary>
        /// Execute an insert, update, delete with OdbcParameters. It returns with
        /// </summary>
        /// <param name="CommandName">Parameters</param>
        /// <param name="cmdType">type of the command</param>
        /// <param name="pars">Parametes</param>
        /// <returns></returns>
        public bool ExecuteNonQuery(string CommandName, CommandType cmdType, SAParameter[] pars)
        {
            SACommand cmd = null;
            int       res = 0;

            cmd             = _connection.CreateCommand();
            cmd.CommandType = cmdType;
            cmd.CommandText = CommandName;
            cmd.Parameters.AddRange(pars);

            try
            {
                _connection.Open();
                res = cmd.ExecuteNonQuery();
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            finally
            {
                cmd.Dispose();
                cmd = null;
                _connection.Close();
            }

            if (res >= 1)
            {
                return(true);
            }
            return(false);
        }
コード例 #27
0
        public JsonResult apagarEleicao(int idEleicao)
        {
            // CALL "dev"."listarEleitores"("idCaderno" = 4)
            SAConnection conn = new SAConnection("Data Source=eleicoes_conn");

            try
            {
                conn.Open();


                SACommand cmd = new SACommand("CALL apagarEleicao(\"idEleicao\" = ?)", conn);
                cmd.CommandType = CommandType.Text;

                SAParameter param = cmd.CreateParameter();
                param.SADbType  = SADbType.Integer;
                param.Direction = ParameterDirection.Input;
                param.Value     = idEleicao;
                cmd.Parameters.Add(param);

                SADataReader reader = cmd.ExecuteReader();

                reader.Close();
                conn.Close();
                return(Json(true));
            }
            catch (SAException ex)
            {
                conn.Close();
                //Console.WriteLine(ex.Errors[0].Source + " : " + ex.Errors[0].Message + " (" + ex.Errors[0].NativeError.ToString() + ")", "Failed to connect");​
                return(Json(false));
            }
        }
コード例 #28
0
        public void Connect()
        {
            if (_connection != null)
            {
                if (_connection.State != ConnectionState.Open)
                {
                    _connection.Open();
                }
            }
            else
            {
                if (_connectionString != String.Empty)
                {
                    StringCollection initKeys = new StringCollection();
                    // ToDo - Figure this out
                    initKeys.AddRange(new string[]
                    {
                        "ARITHABORT", "ANSI_NULLS", "ANSI_WARNINGS", "ARITHIGNORE", "ANSI_DEFAULTS",
                        "ANSI_NULL_DFLT_OFF", "ANSI_NULL_DFLT_ON", "ANSI_PADDING", "ANSI_WARNINGS"
                    });

                    StringBuilder initStatements   = new StringBuilder();
                    StringBuilder connectionString = new StringBuilder();

                    Hashtable attribs = this.ParseConfigString(_connectionString);
                    foreach (string key in attribs.Keys)
                    {
                        if (initKeys.Contains(key.Trim().ToUpper()))
                        {
                            initStatements.AppendFormat("SET {0} {1};", key, attribs[key]);
                        }
                        else if (key.Trim().Length > 0)
                        {
                            connectionString.AppendFormat("{0}={1};", key, attribs[key]);
                        }
                    }

                    _connection = new SAConnection(connectionString.ToString());
                    _connection.Open();

                    if (initStatements.Length > 0)
                    {
                        SACommand cmd = new SACommand();
                        cmd.CommandTimeout = this.CommandTimeout;
                        cmd.CommandText    = initStatements.ToString();
                        cmd.Connection     = _connection;
                        cmd.CommandType    = CommandType.Text;
                        cmd.ExecuteNonQuery();
                        cmd.Dispose();
                    }
                }
                else
                {
                    throw new InvalidOperationException(
                              "You must set a connection object or specify a connection string before calling Connect.");
                }
            }
        }
コード例 #29
0
        esDataResponse IDataProvider.ExecuteNonQuery(esDataRequest request)
        {
            esDataResponse response = new esDataResponse();
            SACommand      cmd      = null;

            try
            {
                cmd = new SACommand();
                if (request.CommandTimeout != null)
                {
                    cmd.CommandTimeout = request.CommandTimeout.Value;
                }
                if (request.Parameters != null)
                {
                    Shared.AddParameters(cmd, request);
                }

                switch (request.QueryType)
                {
                case esQueryType.TableDirect:
                    cmd.CommandType = CommandType.TableDirect;
                    cmd.CommandText = request.QueryText;
                    break;

                case esQueryType.StoredProcedure:
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = Shared.CreateFullName(request);
                    break;

                case esQueryType.Text:
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = request.QueryText;
                    break;
                }

                try
                {
                    esTransactionScope.Enlist(cmd, request.ConnectionString, CreateIDbConnectionDelegate);
                    response.RowsEffected = cmd.ExecuteNonQuery();
                }
                finally
                {
                    esTransactionScope.DeEnlist(cmd);
                }

                if (request.Parameters != null)
                {
                    Shared.GatherReturnParameters(cmd, request, response);
                }
            }
            catch (Exception ex)
            {
                CleanupCommand(cmd);
                response.Exception = ex;
            }

            return(response);
        }
コード例 #30
0
        esDataResponse IDataProvider.esLoadDataTable(esDataRequest request)
        {
            esDataResponse response = new esDataResponse();

            try
            {
                switch (request.QueryType)
                {
                case esQueryType.StoredProcedure:

                    response = LoadDataTableFromStoredProcedure(request);
                    break;

                case esQueryType.Text:

                    response = LoadDataTableFromText(request);
                    break;

                case esQueryType.DynamicQuery:

                    response = new esDataResponse();
                    SACommand cmd = QueryBuilder.PrepareCommand(request);
                    LoadDataTableFromDynamicQuery(request, response, cmd);
                    break;

                case esQueryType.DynamicQueryParseOnly:

                    response = new esDataResponse();
                    SACommand cmd1 = QueryBuilder.PrepareCommand(request);
                    response.LastQuery = cmd1.CommandText;
                    break;

#if (LINQ)
                case esQueryType.IQueryable:

                    response = new esDataResponse();
                    LoadDataTableForLinqToSql(request, response);
                    break;
#endif

                case esQueryType.ManyToMany:

                    response = LoadManyToMany(request);
                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                response.Exception = ex;
            }

            return(response);
        }
コード例 #31
0
 static private void CleanupCommand(SACommand cmd)
 {
     if (cmd != null && cmd.Connection != null)
     {
         if (cmd.Connection.State == ConnectionState.Open)
         {
             cmd.Connection.Close();
         }
     }
 }
        private void tabControl1_Selected(object sender, TabControlEventArgs e)
        {
            // Move the input focus to the query builder.
            // This will fire Leave event in the text box and update the query builder
            // with modified query text.
            queryBuilder1.Focus();
            Application.DoEvents();

            // Try to execute the query using current database connection:

            if (e.TabPage == tabPageData)
            {
                dataGridView1.DataSource = null;

                if (queryBuilder1.MetadataProvider != null && queryBuilder1.MetadataProvider.Connected)
                {
                    SACommand command = (SACommand)queryBuilder1.MetadataProvider.Connection.CreateCommand();
                    command.CommandText = queryBuilder1.SQL;

                    // handle the query parameters
                    if (queryBuilder1.Parameters.Count > 0)
                    {
                        for (int i = 0; i < queryBuilder1.Parameters.Count; i++)
                        {
                            if (!command.Parameters.Contains(queryBuilder1.Parameters[i].FullName))
                            {
                                SAParameter parameter = new SAParameter();
                                parameter.ParameterName = queryBuilder1.Parameters[i].FullName;
                                parameter.DbType        = queryBuilder1.Parameters[i].DataType;
                                command.Parameters.Add(parameter);
                            }
                        }

                        using (QueryParametersForm qpf = new QueryParametersForm(command))
                        {
                            qpf.ShowDialog();
                        }
                    }

                    SADataAdapter adapter = new SADataAdapter(command);
                    DataSet       dataset = new DataSet();

                    try
                    {
                        adapter.Fill(dataset, "QueryResult");
                        dataGridView1.DataSource = dataset.Tables["QueryResult"];
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "SQL query error");
                    }
                }
            }
        }
コード例 #33
0
ファイル: Shared.cs プロジェクト: HoosierMike/Tiraggo
        public static void AddParameters(SACommand cmd, tgDataRequest request)
        {
            if (request.QueryType == tgQueryType.Text && request.QueryText != null && request.QueryText.Contains("{0}"))
            {
                int i = 0;
                string token = String.Empty;
                string sIndex = String.Empty;
                string param = String.Empty;

                foreach (tgParameter esParam in request.Parameters)
                {
                    sIndex = i.ToString();
                    token = '{' + sIndex + '}';
                    param = "?"; // Delimiters.Param + "p" + sIndex;
                    request.QueryText = request.QueryText.Replace(token, param);
                    i++;

                    cmd.Parameters.AddWithValue(Delimiters.Param + esParam.Name, esParam.Value);
                }
            }
            else
            {
                SAParameter param;

                foreach (tgParameter esParam in request.Parameters)
                {
                    param = cmd.Parameters.AddWithValue(Delimiters.Param + esParam.Name, esParam.Value);

                    switch (esParam.Direction)
                    {
                        case tgParameterDirection.InputOutput:
                            param.Direction = ParameterDirection.InputOutput;
                            break;

                        case tgParameterDirection.Output:
                            param.Direction = ParameterDirection.Output;
                            param.DbType = esParam.DbType;
                            param.Size = esParam.Size;
                            param.Scale = esParam.Scale;
                            param.Precision = esParam.Precision;
                            break;

                        case tgParameterDirection.ReturnValue:
                            param.Direction = ParameterDirection.ReturnValue;
                            break;

                        // The default is ParameterDirection.Input;
                    }
                }
            }
        }
コード例 #34
0
ファイル: SprocTests.cs プロジェクト: cwbrandsma/FluentAdo
        public void BasicAdoCode()
        {
            var connection = ConnectionFactory.GetConnection();

            using (var cmd = new SACommand("WithOutParams", connection))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                SAParameter param1 = new SAParameter("out1", SADbType.Integer);
                param1.Direction = ParameterDirection.InputOutput;
                param1.Value = 9;
                cmd.Parameters.Add(param1);

                SAParameter param2 = new SAParameter("out2", SADbType.Integer);
                param1.Direction = ParameterDirection.InputOutput;
                param2.Value = 9;
                cmd.Parameters.Add(param2);

                cmd.ExecuteNonQuery();

                Console.WriteLine(param1.Value);
                Console.WriteLine(param2.Value);

            }
        }
コード例 #35
0
ファイル: DataProvider.cs プロジェクト: jssgarcia/ESLite
        // If it's an Insert we fetch the @@Identity value and stuff it in the proper column
        protected static void OnRowUpdated(object sender, SARowUpdatedEventArgs e)
        {
            try
            {
                PropertyCollection props = e.Row.Table.ExtendedProperties;
                if (props.ContainsKey("props"))
                {
                    props = (PropertyCollection)props["props"];
                }

                if (e.Status == UpdateStatus.Continue && (e.StatementType == StatementType.Insert || e.StatementType == StatementType.Update))
                {
                    esDataRequest request = props["esDataRequest"] as esDataRequest;
                    esEntitySavePacket packet = (esEntitySavePacket)props["esEntityData"];

                    if (e.StatementType == StatementType.Insert)
                    {
                        if (props.Contains("AutoInc"))
                        {
                            string autoInc = props["AutoInc"] as string;

                            SACommand cmd = new SACommand();
                            cmd.Connection = e.Command.Connection;
                            cmd.Transaction = e.Command.Transaction;

                            cmd.CommandText = "SELECT @@IDENTITY;";
                            cmd.CommandType = CommandType.Text;

                            object o = null;

                            #region Profiling

                            if (sTraceHandler != null)
                            {
                                using (esTraceArguments esTrace = new esTraceArguments(request, cmd, "OnRowUpdated", System.Environment.StackTrace))
                                {
                                    try
                                    {
                                        o = cmd.ExecuteScalar();
                                    }
                                    catch (Exception ex)
                                    {
                                        esTrace.Exception = ex.Message;
                                        throw;
                                    }
                                }
                            }
                            else

                            #endregion Profiling

                            {
                                o = cmd.ExecuteScalar();
                            }

                            if (o != null)
                            {
                                packet.CurrentValues[autoInc] = o;
                                e.Row[autoInc] = o;
                            }
                        }

                        if (props.Contains("EntitySpacesConcurrency"))
                        {
                            string esConcurrencyColumn = props["EntitySpacesConcurrency"] as string;
                            packet.CurrentValues[esConcurrencyColumn] = 1;
                        }
                    }

                    //-------------------------------------------------------------------------------------------------
                    // Fetch any defaults, SQLite doesn't support output parameters so we gotta do this the hard way
                    //-------------------------------------------------------------------------------------------------
                    if (props.Contains("Defaults"))
                    {
                        // Build the Where parameter and parameters
                        SACommand cmd = new SACommand();
                        cmd.Connection = e.Command.Connection;
                        cmd.Transaction = e.Command.Transaction;

                        string select = (string)props["Defaults"];

                        string[] whereParameters = ((string)props["Where"]).Split(',');

                        string comma = String.Empty;
                        string where = String.Empty;
                        int i = 1;
                        foreach (string parameter in whereParameters)
                        {
                            SAParameter p = new SAParameter(":p" + i++.ToString(), e.Row[parameter]);
                            cmd.Parameters.Add(p);
                            where += comma + "[" + parameter + "]=" + p.ParameterName;
                            comma = " AND ";
                        }

                        // Okay, now we can execute the sql and get any values that have defaults that were
                        // null at the time of the insert and/or our timestamp
                        cmd.CommandText = "SELECT " + select + " FROM [" + request.ProviderMetadata.Source + "] WHERE " + where + ";";

                        SADataReader rdr = null;

                        try
                        {
                            #region Profiling

                            if (sTraceHandler != null)
                            {
                                using (esTraceArguments esTrace = new esTraceArguments(request, cmd, "OnRowUpdated", System.Environment.StackTrace))
                                {
                                    try
                                    {
                                        rdr = cmd.ExecuteReader(CommandBehavior.SingleResult);
                                    }
                                    catch (Exception ex)
                                    {
                                        esTrace.Exception = ex.Message;
                                        throw;
                                    }
                                }
                            }
                            else

                            #endregion Profiling

                            {
                                rdr = cmd.ExecuteReader(CommandBehavior.SingleResult);
                            }

                            if (rdr.Read())
                            {
                                select = select.Replace("[", String.Empty).Replace("]", String.Empty);
                                string[] selectCols = select.Split(',');

                                for (int k = 0; k < selectCols.Length; k++)
                                {
                                    packet.CurrentValues[selectCols[k]] = rdr.GetValue(k);
                                }
                            }
                        }
                        finally
                        {
                            // Make sure we close the reader no matter what
                            if (rdr != null) rdr.Close();
                        }
                    }

                    if (e.StatementType == StatementType.Update)
                    {
                        string colName = props["EntitySpacesConcurrency"] as string;
                        object o = e.Row[colName];

                        switch (Type.GetTypeCode(o.GetType()))
                        {
                            case TypeCode.Int16: packet.CurrentValues[colName] = ((System.Int16)o) + 1; break;
                            case TypeCode.Int32: packet.CurrentValues[colName] = ((System.Int32)o) + 1; break;
                            case TypeCode.Int64: packet.CurrentValues[colName] = ((System.Int64)o) + 1; break;
                            case TypeCode.UInt16: packet.CurrentValues[colName] = ((System.UInt16)o) + 1; break;
                            case TypeCode.UInt32: packet.CurrentValues[colName] = ((System.UInt32)o) + 1; break;
                            case TypeCode.UInt64: packet.CurrentValues[colName] = ((System.UInt64)o) + 1; break;
                        }
                    }
                }
            }
            catch { }
        }
コード例 #36
0
        static private esDataResponse LoadDataTableFromText(esDataRequest request)
        {
            esDataResponse response = new esDataResponse();
            SACommand cmd = null;

            try
            {
                DataTable dataTable = new DataTable(request.ProviderMetadata.Destination);

                cmd = new SACommand();
                cmd.CommandType = CommandType.Text;
                if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;
                if (request.Parameters != null) Shared.AddParameters(cmd, request);

                SADataAdapter da = new SADataAdapter();
                cmd.CommandText = request.QueryText;
                da.SelectCommand = cmd;

                try
                {
                    esTransactionScope.Enlist(da.SelectCommand, request.ConnectionString, CreateIDbConnectionDelegate);
                    da.Fill(dataTable);
                }
                finally
                {
                    esTransactionScope.DeEnlist(da.SelectCommand);
                }

                response.Table = dataTable;

                if (request.Parameters != null)
                {
                    Shared.GatherReturnParameters(cmd, request, response);
                }
            }
            catch (Exception)
            {
                CleanupCommand(cmd);
                throw;
            }
            finally
            {

            }

            return response;
        }
コード例 #37
0
ファイル: DataProvider.cs プロジェクト: jssgarcia/ESLite
        esDataResponse IDataProvider.ExecuteScalar(esDataRequest request)
        {
            esDataResponse response = new esDataResponse();
            SACommand cmd = null;

            try
            {
                cmd = new SACommand();
                if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;
                if (request.Parameters != null) Shared.AddParameters(cmd, request);

                switch (request.QueryType)
                {
                    case esQueryType.TableDirect:
                        cmd.CommandType = CommandType.TableDirect;
                        cmd.CommandText = request.QueryText;
                        break;

                    case esQueryType.StoredProcedure:
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.CommandText = Shared.CreateFullName(request);
                        break;

                    case esQueryType.Text:
                        cmd.CommandType = CommandType.Text;
                        cmd.CommandText = request.QueryText;
                        break;

                    case esQueryType.DynamicQuery:
                        cmd = QueryBuilder.PrepareCommand(request);
                        break;
                }

                try
                {
                    esTransactionScope.Enlist(cmd, request.ConnectionString, CreateIDbConnectionDelegate);

                    #region Profiling

                    if (sTraceHandler != null)
                    {
                        using (esTraceArguments esTrace = new esTraceArguments(request, cmd, "ExecuteScalar", System.Environment.StackTrace))
                        {
                            try
                            {
                                response.Scalar = cmd.ExecuteScalar();
                            }
                            catch (Exception ex)
                            {
                                esTrace.Exception = ex.Message;
                                throw;
                            }
                        }
                    }
                    else

                    #endregion Profiling

                    {
                        response.Scalar = cmd.ExecuteScalar();
                    }
                }
                finally
                {
                    esTransactionScope.DeEnlist(cmd);
                }

                if (request.Parameters != null)
                {
                    Shared.GatherReturnParameters(cmd, request, response);
                }
            }
            catch (Exception ex)
            {
                CleanupCommand(cmd);
                response.Exception = ex;
            }

            return response;
        }
コード例 #38
0
        public virtual IList<AbstractBusinessObject> Delete(string tablename, Type type, string criteria,
            Hashtable parameters)
        {
            SACommand selectcmd = new SACommand("SELECT * from " + tablename + " where " + criteria);
            SACommand deletecmd = new SACommand ("DELETE from " + tablename + " where " + criteria);
            selectcmd.Connection = conn;
            deletecmd.Connection = conn;

            //string name, value;
            if (parameters != null)
            {
                IDictionaryEnumerator ps = parameters.GetEnumerator();
                while (ps.MoveNext())
                {
                    if (ps.Key is string)
                    {
                        selectcmd.Parameters.Add((string)ps.Key, ps.Value);
                        deletecmd.Parameters.Add((string)ps.Key, ps.Value);
                    }
                }
            }
            //for (int i=0; i < parameters.Count; i++)
            //{
            //    name = parameters.GetKey(i);
            //    value = parameters[name];
            //    selectcmd.Parameters.Add(name, value);
            //    deletecmd.Parameters.Add(name, value);
            //}
            IList<AbstractBusinessObject> rc = Query(tablename, type, selectcmd);
            if (selectcmd != null)
                selectcmd.Dispose();

            ExecuteNonQuery(deletecmd);
            if (deletecmd != null)
                deletecmd.Dispose();

            return rc;
        }
コード例 #39
0
        protected Object ExecuteScalar(SACommand cmd)
        {
            Object rc = null;
            int retries = -1;
            bool retryFlag = true;

            while (retryFlag && retries < 1200)
            {
                try
                {
                    lock (BaseTableAdapter.conn)
                    {
                        if (cmd.Connection.State == ConnectionState.Open)
                        {
                            _log.Log(String.Format("ExecuteScalar - {0}", cmd.CommandText), "DB", 5);
                            cmd.Transaction = _trans;
                            rc = cmd.ExecuteScalar();
                        }
                        else
                        {
                            _log.Log(String.Format("ExecuteScalar Error connection not open - {0}", cmd.CommandText), "DB", 5);
                        }
                    }
                    return rc;
                }
                catch (SAException ex)
                {
                    retryFlag = ShouldRetry(ex, cmd);

                    string logoutput = String.Format("---- ExecuteScalar ----\r\n{0}\r\n{1}", ex.Message, ex.StackTrace);
                    _log.Log(logoutput, "DB", 3);
                    _log.Log(logoutput);
                    retries = retries + 1;
                }

            }
            return rc;
        }
コード例 #40
0
ファイル: DataProvider.cs プロジェクト: jssgarcia/ESLite
        private static esDataResponse LoadDataTableFromText(esDataRequest request)
        {
            esDataResponse response = new esDataResponse();
            SACommand cmd = null;

            try
            {
                DataTable dataTable = new DataTable(request.ProviderMetadata.Destination);

                cmd = new SACommand();
                cmd.CommandType = CommandType.Text;
                if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;
                if (request.Parameters != null) Shared.AddParameters(cmd, request);

                SADataAdapter da = new SADataAdapter();
                cmd.CommandText = request.QueryText;
                da.SelectCommand = cmd;

                try
                {
                    esTransactionScope.Enlist(da.SelectCommand, request.ConnectionString, CreateIDbConnectionDelegate);

                    #region Profiling

                    if (sTraceHandler != null)
                    {
                        using (esTraceArguments esTrace = new esTraceArguments(request, cmd, "LoadFromText", System.Environment.StackTrace))
                        {
                            try
                            {
                                da.Fill(dataTable);
                            }
                            catch (Exception ex)
                            {
                                esTrace.Exception = ex.Message;
                                throw;
                            }
                        }
                    }
                    else

                    #endregion Profiling

                    {
                        da.Fill(dataTable);
                    }
                }
                finally
                {
                    esTransactionScope.DeEnlist(da.SelectCommand);
                }

                response.Table = dataTable;

                if (request.Parameters != null)
                {
                    Shared.GatherReturnParameters(cmd, request, response);
                }
            }
            catch (Exception)
            {
                CleanupCommand(cmd);
                throw;
            }
            finally
            {
            }

            return response;
        }
コード例 #41
0
 private void CreateParameters(SACommand cmd)
 {
     cmd.Parameters.Add(new SAParameter("id", SADbType.Integer));
     cmd.Parameters.Add(new SAParameter("code", SADbType.NVarChar, 15));
     cmd.Parameters.Add(new SAParameter("name", SADbType.NVarChar, 255));
     cmd.Parameters.Add(new SAParameter("mft", SADbType.NVarChar, 56));
     cmd.Parameters.Add(new SAParameter("size", SADbType.NVarChar, 15));
     cmd.Parameters.Add(new SAParameter("discontinued", SADbType.Bit));
     cmd.Parameters.Add(new SAParameter("barcode", SADbType.NVarChar, 56));
 }
コード例 #42
0
ファイル: Shared.cs プロジェクト: HoosierMike/Tiraggo
        public static SACommand BuildStoredProcInsertCommand(tgDataRequest request)
        {
            Dictionary<string, SAParameter> types = Cache.GetParameters(request);

            SACommand cmd = new SACommand();
            if(request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = CreateFullSPName(request, request.ProviderMetadata.spInsert);

            PopulateStoredProcParameters(cmd, request);

            foreach (tgColumnMetadata col in request.Columns)
            {
                if (col.HasDefault &&
                    (col.Default.ToLower().Contains("newid") || col.Default.ToLower().Contains("newsequentialid")))
                {
                    // They could pre-assign this even though it has a default
                    SAParameter p = types[col.Name];
                    p = cmd.Parameters[p.ParameterName];
                    p.Direction = ParameterDirection.InputOutput;
                }
                if (col.IsComputed || col.IsAutoIncrement || col.IsEntitySpacesConcurrency)
                {
                    SAParameter p = types[col.Name];
                    p = cmd.Parameters[p.ParameterName];
                    p.Direction = ParameterDirection.InputOutput;
                }
            }

            return cmd;
        }
コード例 #43
0
        esDataResponse IDataProvider.ExecuteReader(esDataRequest request)
        {
            esDataResponse response = new esDataResponse();
            SACommand cmd = null;

            try
            {
                cmd = new SACommand();
                if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;
                if (request.Parameters != null) Shared.AddParameters(cmd, request);

                switch (request.QueryType)
                {
                    case esQueryType.TableDirect:
                        cmd.CommandType = CommandType.TableDirect;
                        cmd.CommandText = request.QueryText;
                        break;

                    case esQueryType.StoredProcedure:
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.CommandText = Shared.CreateFullName(request);
                        break;

                    case esQueryType.Text:
                        cmd.CommandType = CommandType.Text;
                        cmd.CommandText = request.QueryText;
                        break;

                    case esQueryType.DynamicQuery:
                        cmd = QueryBuilder.PrepareCommand(request);
                        break;
                }

                cmd.Connection = new SAConnection(request.ConnectionString);
                cmd.Connection.Open();

                response.DataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);                
            }
            catch (Exception ex)
            {
                CleanupCommand(cmd);
                response.Exception = ex;
            }

            return response;
        }
コード例 #44
0
ファイル: Shared.cs プロジェクト: HoosierMike/Tiraggo
        public static SACommand BuildDynamicUpdateCommand(tgDataRequest request, List<string> modifiedColumns)
        {
            string where = String.Empty;
            string scomma = String.Empty;
            string wcomma = String.Empty;
            string defaults = String.Empty;
            string defaultsWhere = String.Empty;
            string defaultsComma = String.Empty;
            string defaultsWhereComma = String.Empty;
            List<SAParameter> whereParams = new List<SAParameter>();

            string sql = "UPDATE " + CreateFullName(request) + " SET ";

            PropertyCollection props = new PropertyCollection();

            Dictionary<string, SAParameter> types = Cache.GetParameters(request);

            SACommand cmd = new SACommand();
            if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;

            tgColumnMetadataCollection cols = request.Columns;
            foreach (tgColumnMetadata col in cols)
            {
                bool isModified = modifiedColumns == null ? false : modifiedColumns.Contains(col.Name);

                if (isModified && (!col.IsAutoIncrement && !col.IsConcurrency && !col.IsEntitySpacesConcurrency))
                {
                    SAParameter p = CloneParameter(types[col.Name]);
                    cmd.Parameters.Add(p);

                    sql += scomma;
                    sql += Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose + " = " + p.ParameterName;
                    scomma = ", ";
                }
                else if (col.IsAutoIncrement)
                {
                    // Nothing to do but leave this here
                }
                else if (col.IsConcurrency)
                {
                    SAParameter p = CloneParameter(types[col.Name]);
                    p.SourceVersion = DataRowVersion.Original;
                    //cmd.Parameters.Add(p);
                    whereParams.Add(p);

                    where += wcomma;
                    where += Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose + " = " + p.ParameterName;
                    wcomma = " AND ";
                }
                else if (col.IsEntitySpacesConcurrency)
                {
                    props["EntitySpacesConcurrency"] = col.Name;

                    SAParameter p = CloneParameter(types[col.Name]);
                    p.SourceVersion = DataRowVersion.Original;
                    //cmd.Parameters.Add(p);
                    whereParams.Add(p);

                    sql += scomma;
                    sql += Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose + " = " + Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose + " + 1";
                    scomma = ", ";

                    where += wcomma;
                    where += Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose + " = " + p.ParameterName;
                    wcomma = " AND ";
                }
                else if (col.IsComputed)
                {
                    // Do nothing but leave this here
                }
                else if (cols.IsSpecialColumn(col))
                {
                    // Do nothing but leave this here
                }
                else if (col.HasDefault)
                {
                    // defaults += defaultsComma + Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose;
                    // defaultsComma = ",";
                }

                if (col.IsInPrimaryKey)
                {
                    SAParameter p = CloneParameter(types[col.Name]);
                    p.SourceVersion = DataRowVersion.Original;
                    //cmd.Parameters.Add(p);
                    whereParams.Add(p);

                    where += wcomma;
                    where += Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose + " = " + p.ParameterName;
                    wcomma = " AND ";

                    defaultsWhere += defaultsWhereComma + col.Name;
                    defaultsWhereComma = ",";
                }
            }

            #region Special Columns
            if (cols.DateModified != null && cols.DateModified.IsServerSide)
            {
                sql += scomma;
                sql += Delimiters.ColumnOpen + cols.DateModified.ColumnName + Delimiters.ColumnClose + " = " + request.ProviderMetadata["DateModified.ServerSideText"];
                scomma = ", ";

                defaults += defaultsComma + Delimiters.ColumnOpen + cols.DateModified.ColumnName + Delimiters.ColumnClose;
                defaultsComma = ",";
            }

            if (cols.ModifiedBy != null && cols.ModifiedBy.IsServerSide)
            {
                sql += scomma;
                sql += Delimiters.ColumnOpen + cols.ModifiedBy.ColumnName + Delimiters.ColumnClose + " = " + request.ProviderMetadata["ModifiedBy.ServerSideText"];
                scomma = ", ";

                defaults += defaultsComma + Delimiters.ColumnOpen + cols.ModifiedBy.ColumnName + Delimiters.ColumnClose;
                defaultsComma = ",";
            }
            #endregion

            if (defaults.Length > 0)
            {
                props["Defaults"] = defaults;
                props["Where"] = defaultsWhere;
            }

            if (whereParams.Count > 0)
            {
                foreach (SAParameter p in whereParams)
                {
                    cmd.Parameters.Add(p);
                }
            }

            sql += " WHERE " + where + ";";

            request.Properties = props;

            cmd.CommandText = sql;
            cmd.CommandType = CommandType.Text;
            return cmd;
        }
コード例 #45
0
ファイル: Shared.cs プロジェクト: HoosierMike/Tiraggo
        public static SACommand BuildStoredProcDeleteCommand(tgDataRequest request)
        {
            Dictionary<string, SAParameter> types = Cache.GetParameters(request);

            SACommand cmd = new SACommand();
            if(request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = CreateFullSPName(request, request.ProviderMetadata.spDelete);

            SAParameter p;

            foreach (tgColumnMetadata col in request.Columns)
            {
                if (col.IsInPrimaryKey)
                {
                    p = types[col.Name];
                    p = CloneParameter(p);
                    p.SourceVersion = DataRowVersion.Current;
                    cmd.Parameters.Add(p);
                }
                else if (col.IsConcurrency || col.IsEntitySpacesConcurrency)
                {
                    p = types[col.Name];
                    p = CloneParameter(p);
                    p.SourceVersion = DataRowVersion.Original;
                    cmd.Parameters.Add(p);
                }
            }

            return cmd;
        }
コード例 #46
0
ファイル: Shared.cs プロジェクト: HoosierMike/Tiraggo
        public static SACommand BuildDynamicInsertCommand(tgDataRequest request, List<string> modifiedColumns)
        {
            string sql = String.Empty;
            string defaults = String.Empty;
            string into = String.Empty;
            string values = String.Empty;
            string comma = String.Empty;
            string defaultComma = String.Empty;
            string where = String.Empty;
            string whereComma = String.Empty;

            PropertyCollection props = new PropertyCollection();

            Dictionary<string, SAParameter> types = Cache.GetParameters(request);

            SACommand cmd = new SACommand();
            if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;

            tgColumnMetadataCollection cols = request.Columns;
            foreach (tgColumnMetadata col in cols)
            {
                bool isModified = modifiedColumns == null ? false : modifiedColumns.Contains(col.Name);

                if (isModified && (!col.IsAutoIncrement && !col.IsConcurrency && !col.IsEntitySpacesConcurrency))
                {
                    SAParameter p = types[col.Name];
                    cmd.Parameters.Add(CloneParameter(p));

                    into += comma + Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose;
                    values += comma + p.ParameterName;
                    comma = ", ";
                }
                else if (col.IsAutoIncrement)
                {
                    props["AutoInc"] = col.Name;
                    props["Source"] = request.ProviderMetadata.Source;
                }
                else if (col.IsConcurrency)
                {
                    props["Timestamp"] = col.Name;
                    props["Source"] = request.ProviderMetadata.Source;
                }
                else if (col.IsEntitySpacesConcurrency)
                {
                    props["EntitySpacesConcurrency"] = col.Name;

                    SAParameter p = types[col.Name];

                    into += comma + Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose;
                    values += comma + "1";
                    comma = ", ";

                    SAParameter clone = CloneParameter(p);
                    clone.Value = 1;
                    cmd.Parameters.Add(clone);
                }
                else if (col.IsComputed)
                {
                    // Do nothing but leave this here
                }
                else if (cols.IsSpecialColumn(col))
                {
                    // Do nothing but leave this here
                }
                else if (col.HasDefault)
                {
                    defaults += defaultComma + Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose;
                    defaultComma = ",";
                }

                if (col.IsInPrimaryKey)
                {
                    where += whereComma + col.Name;
                    whereComma = ",";
                }
            }

            #region Special Columns
            if (cols.DateAdded != null && cols.DateAdded.IsServerSide)
            {
                into += comma + Delimiters.ColumnOpen + cols.DateAdded.ColumnName + Delimiters.ColumnClose;
                values += comma + request.ProviderMetadata["DateAdded.ServerSideText"];
                comma = ", ";

                defaults += defaultComma + Delimiters.ColumnOpen + cols.DateAdded.ColumnName + Delimiters.ColumnClose;
                defaultComma = ",";
            }

            if (cols.DateModified != null && cols.DateModified.IsServerSide)
            {
                into += comma + Delimiters.ColumnOpen + cols.DateModified.ColumnName + Delimiters.ColumnClose;
                values += comma + request.ProviderMetadata["DateModified.ServerSideText"];
                comma = ", ";

                defaults += defaultComma + Delimiters.ColumnOpen + cols.DateModified.ColumnName + Delimiters.ColumnClose;
                defaultComma = ",";
            }

            if (cols.AddedBy != null && cols.AddedBy.IsServerSide)
            {
                into += comma + Delimiters.ColumnOpen + cols.AddedBy.ColumnName + Delimiters.ColumnClose;
                values += comma + request.ProviderMetadata["AddedBy.ServerSideText"];
                comma = ", ";

                defaults += defaultComma + Delimiters.ColumnOpen + cols.AddedBy.ColumnName + Delimiters.ColumnClose;
                defaultComma = ",";
            }

            if (cols.ModifiedBy != null && cols.ModifiedBy.IsServerSide)
            {
                into += comma + Delimiters.ColumnOpen + cols.ModifiedBy.ColumnName + Delimiters.ColumnClose;
                values += comma + request.ProviderMetadata["ModifiedBy.ServerSideText"];
                comma = ", ";

                defaults += defaultComma + Delimiters.ColumnOpen + cols.ModifiedBy.ColumnName + Delimiters.ColumnClose;
                defaultComma = ",";
            }
            #endregion

            if (defaults.Length > 0)
            {
                comma = String.Empty;
                props["Defaults"] = defaults;
                props["Where"] = where;
            }

            sql += " INSERT INTO " + CreateFullName(request);

            if (into.Length != 0)
            {
                sql += "(" + into + ") VALUES (" + values + ")";
            }
            else
            {
                sql += "DEFAULT VALUES";
            }

            request.Properties = props;

            cmd.CommandText = sql;
            cmd.CommandType = CommandType.Text;
            return cmd;
        }
コード例 #47
0
ファイル: Shared.cs プロジェクト: HoosierMike/Tiraggo
        public static SACommand BuildDynamicDeleteCommand(tgDataRequest request, tgEntitySavePacket packet)
        {
            Dictionary<string, SAParameter> types = Cache.GetParameters(request);

            SACommand cmd = new SACommand();
            if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;

            string sql = "DELETE FROM " + CreateFullName(request) + " ";

            string comma = String.Empty;
            comma = String.Empty;
            sql += " WHERE ";
            foreach (tgColumnMetadata col in request.Columns)
            {
                if (col.IsInPrimaryKey || col.IsEntitySpacesConcurrency)
                {
                    SAParameter p = types[col.Name];
                    cmd.Parameters.Add(CloneParameter(p));

                    sql += comma;
                    sql += Delimiters.ColumnOpen + col.Name + Delimiters.ColumnClose + " = " + p.ParameterName;
                    comma = " AND ";
                }
            }

            cmd.CommandText = sql;
            cmd.CommandType = CommandType.Text;
            return cmd;
        }
コード例 #48
0
        static private esDataResponse LoadDataSetFromStoredProcedure(esDataRequest request)
        {
            esDataResponse response = new esDataResponse();
            SACommand cmd = null;

            try
            {
                DataSet dataSet = new DataSet();

                cmd = new SACommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = Shared.CreateFullName(request);

                if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;
                if (request.Parameters != null) Shared.AddParameters(cmd, request);

                SADataAdapter da = new SADataAdapter();
                da.SelectCommand = cmd;

                try
                {
                    esTransactionScope.Enlist(da.SelectCommand, request.ConnectionString, CreateIDbConnectionDelegate);
                    da.Fill(dataSet);
                }
                finally
                {
                    esTransactionScope.DeEnlist(da.SelectCommand);
                }

                response.DataSet = dataSet;

                if (request.Parameters != null)
                {
                    Shared.GatherReturnParameters(cmd, request, response);
                }
            }
            catch (Exception)
            {
                CleanupCommand(cmd);
                throw;
            }
            finally
            {

            }

            return response;
        }
コード例 #49
0
ファイル: DataProvider.cs プロジェクト: jssgarcia/ESLite
 private static void CleanupCommand(SACommand cmd)
 {
     if (cmd != null && cmd.Connection != null)
     {
         if (cmd.Connection.State == ConnectionState.Open)
         {
             cmd.Connection.Close();
         }
     }
 }
コード例 #50
0
ファイル: Shared.cs プロジェクト: HoosierMike/Tiraggo
        public static SACommand BuildStoredProcUpdateCommand(tgDataRequest request)
        {
            Dictionary<string, SAParameter> types = Cache.GetParameters(request);

            SACommand cmd = new SACommand();
            if(request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = CreateFullSPName(request, request.ProviderMetadata.spUpdate);

            PopulateStoredProcParameters(cmd, request);

            foreach (tgColumnMetadata col in request.Columns)
            {
                if (col.IsComputed || col.IsConcurrency || col.IsEntitySpacesConcurrency)
                {
                    SAParameter p = types[col.Name];
                    p = cmd.Parameters[p.ParameterName];
                    p.Direction = ParameterDirection.InputOutput;
                }
            }

            return cmd;
        }
コード例 #51
0
ファイル: DataProvider.cs プロジェクト: jssgarcia/ESLite
        // This is used only to execute the Dynamic Query API
        private static void LoadDataTableFromDynamicQuery(esDataRequest request, esDataResponse response, SACommand cmd)
        {
            try
            {
                response.LastQuery = cmd.CommandText;

                if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;

                DataTable dataTable = new DataTable(request.ProviderMetadata.Destination);

                SADataAdapter da = new SADataAdapter();
                da.SelectCommand = cmd;

                try
                {
                    esTransactionScope.Enlist(da.SelectCommand, request.ConnectionString, CreateIDbConnectionDelegate);

                    #region Profiling

                    if (sTraceHandler != null)
                    {
                        using (esTraceArguments esTrace = new esTraceArguments(request, cmd, "LoadFromDynamicQuery", System.Environment.StackTrace))
                        {
                            try
                            {
                                da.Fill(dataTable);
                            }
                            catch (Exception ex)
                            {
                                esTrace.Exception = ex.Message;
                                throw;
                            }
                        }
                    }
                    else

                    #endregion Profiling

                    {
                        da.Fill(dataTable);
                    }
                }
                finally
                {
                    esTransactionScope.DeEnlist(da.SelectCommand);
                };

                response.Table = dataTable;
            }
            catch (Exception)
            {
                CleanupCommand(cmd);
                throw;
            }
            finally
            {
            }
        }
コード例 #52
0
ファイル: Shared.cs プロジェクト: HoosierMike/Tiraggo
        public static void GatherReturnParameters(SACommand cmd, tgDataRequest request, tgDataResponse response)
        {
            if (cmd.Parameters.Count > 0)
            {
                if (request.Parameters != null && request.Parameters.Count > 0)
                {
                    response.Parameters = new tgParameters();

                    foreach (tgParameter esParam in request.Parameters)
                    {
                        if (esParam.Direction != tgParameterDirection.Input)
                        {
                            response.Parameters.Add(esParam);
                            SAParameter p = cmd.Parameters[Delimiters.Param + esParam.Name];
                            esParam.Value = p.Value;
                        }
                    }
                }
            }
        }
コード例 #53
0
 private void SetAddCommandParameters(SACommand cmd, Product product)
 {
     cmd.Parameters[0].Value = product.ID;
     cmd.Parameters[1].Value = product.ProductCode;
     cmd.Parameters[2].Value = product.Name;
     cmd.Parameters[3].Value = product.Manufacturer;
     cmd.Parameters[4].Value = product.Size;
     cmd.Parameters[5].Value = !product.Active;
     cmd.Parameters[6].Value = product.BarCode;
 }
コード例 #54
0
ファイル: Shared.cs プロジェクト: HoosierMike/Tiraggo
        public static void PopulateStoredProcParameters(SACommand cmd, tgDataRequest request)
        {
            Dictionary<string, SAParameter> types = Cache.GetParameters(request);

            SAParameter p;

            foreach (tgColumnMetadata col in request.Columns)
            {
                p = types[col.Name];
                p = CloneParameter(p);
                p.SourceVersion = DataRowVersion.Current;

                if (p.SADbType == SADbType.TimeStamp)
                {
                    p.Direction = ParameterDirection.InputOutput;
                }

                if (col.IsComputed && col.CharacterMaxLength > 0)
                {
                    p.Size = (int)col.CharacterMaxLength;
                }

                cmd.Parameters.Add(p);
            }
        }
コード例 #55
0
ファイル: DataProvider.cs プロジェクト: BrewDawg/Tiraggo
        private static tgDataResponse LoadDataSetFromStoredProcedure(tgDataRequest request)
        {
            tgDataResponse response = new tgDataResponse();
            SACommand cmd = null;

            try
            {
                DataSet dataSet = new DataSet();

                cmd = new SACommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = Shared.CreateFullName(request);

                if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;
                if (request.Parameters != null) Shared.AddParameters(cmd, request);

                SADataAdapter da = new SADataAdapter();
                da.SelectCommand = cmd;

                try
                {
                    tgTransactionScope.Enlist(da.SelectCommand, request.ConnectionString, CreateIDbConnectionDelegate);

                    #region Profiling

                    if (sTraceHandler != null)
                    {
                        using (esTraceArguments esTrace = new esTraceArguments(request, cmd, "LoadFromStoredProcedure", System.Environment.StackTrace))
                        {
                            try
                            {
                                da.Fill(dataSet);
                            }
                            catch (Exception ex)
                            {
                                esTrace.Exception = ex.Message;
                                throw;
                            }
                        }
                    }
                    else

                    #endregion Profiling

                    {
                        da.Fill(dataSet);
                    }
                }
                finally
                {
                    tgTransactionScope.DeEnlist(da.SelectCommand);
                }

                response.DataSet = dataSet;

                if (request.Parameters != null)
                {
                    Shared.GatherReturnParameters(cmd, request, response);
                }
            }
            catch (Exception)
            {
                CleanupCommand(cmd);
                throw;
            }
            finally
            {
            }

            return response;
        }
コード例 #56
0
ファイル: DataProvider.cs プロジェクト: jssgarcia/ESLite
        private static esDataResponse LoadManyToMany(esDataRequest request)
        {
            esDataResponse response = new esDataResponse();
            SACommand cmd = null;

            try
            {
                DataTable dataTable = new DataTable(request.ProviderMetadata.Destination);

                cmd = new SACommand();
                cmd.CommandType = CommandType.Text;
                if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;

                string mmQuery = request.QueryText;

                string[] sections = mmQuery.Split('|');
                string[] tables = sections[0].Split(',');
                string[] columns = sections[1].Split(',');

                string prefix = String.Empty;

                if (request.Catalog != null || request.ProviderMetadata.Catalog != null)
                {
                    prefix += Delimiters.TableOpen;
                    prefix += request.Catalog != null ? request.Catalog : request.ProviderMetadata.Catalog;
                    prefix += Delimiters.TableClose + ".";
                }

                if (request.Schema != null || request.ProviderMetadata.Schema != null)
                {
                    prefix += Delimiters.TableOpen;
                    prefix += request.Schema != null ? request.Schema : request.ProviderMetadata.Schema;
                    prefix += Delimiters.TableClose + ".";
                }

                string table0 = prefix + Delimiters.TableOpen + tables[0] + Delimiters.TableClose;
                string table1 = prefix + Delimiters.TableOpen + tables[1] + Delimiters.TableClose;

                string sql = "SELECT * FROM " + table0 + " JOIN " + table1 + " ON " + table0 + ".[" + columns[0] + "] = ";
                sql += table1 + ".[" + columns[1] + "] WHERE " + table1 + ".[" + sections[2] + "] = ?";

                if (request.Parameters != null)
                {
                    Shared.AddParameters(cmd, request);
                }

                SADataAdapter da = new SADataAdapter();
                cmd.CommandText = sql;

                da.SelectCommand = cmd;

                try
                {
                    esTransactionScope.Enlist(da.SelectCommand, request.ConnectionString, CreateIDbConnectionDelegate);

                    #region Profiling

                    if (sTraceHandler != null)
                    {
                        using (esTraceArguments esTrace = new esTraceArguments(request, cmd, "LoadManyToMany", System.Environment.StackTrace))
                        {
                            try
                            {
                                da.Fill(dataTable);
                            }
                            catch (Exception ex)
                            {
                                esTrace.Exception = ex.Message;
                                throw;
                            }
                        }
                    }
                    else

                    #endregion Profiling

                    {
                        da.Fill(dataTable);
                    }
                }
                finally
                {
                    esTransactionScope.DeEnlist(da.SelectCommand);
                }

                response.Table = dataTable;
            }
            catch (Exception)
            {
                CleanupCommand(cmd);
                throw;
            }
            finally
            {
            }

            return response;
        }
コード例 #57
0
        //string sql, SAParameterCollection criteria,
        public virtual IList<AbstractBusinessObject> Query(string tablename, Type boType, SACommand cmd)
        {
            //SACommand objSql;
            //SADataReader dataReader;
            SADataAdapter adp = new SADataAdapter();

            DataSet ds;
            ArrayList abos =  new ArrayList();
            // Getting rowcount
            //sql = "SELECT count(*) as Count FROM "+tablename+" where UserID = @userid";
            //objSql = new SACommand(sql, conn);
            //objSql.Parameters.AddWithValue("@userid", UserID);
            //dataReader = ExecuteReader(objSql);
            //dataReader.Read();
            //int rowcount = dataReader.GetInt32(0);
            //dataReader.Close();

            //if (rowcount <= 0)
            //    return null;
            if (BaseTableAdapter._trans != null)
                cmd.Transaction = _trans;

            try
            {
                // filling the DataSet with the DataAdapter
                adp.TableMappings.Add("Table", tablename);
                //add Parameters

                cmd.CommandType = CommandType.Text;
                adp.SelectCommand = cmd;
                ds = new DataSet(tablename);
                lock(BaseTableAdapter.conn)
                    adp.Fill(ds);

                // Retrieve all the rows
                DataRowCollection rows = ds.Tables[0].Rows;
                if (rows.Count < 1)
                    return null;

                // Loop through the Columns in the DataSet and map that to the properties of the class
                IEnumerator columns = ds.Tables[0].Columns.GetEnumerator();
                DataColumn datacolumn;
                DataRow datarow;
                string cname;
                object cvalue;

                ConstructorInfo cons = boType.GetConstructor(Type.EmptyTypes);
                PropertyInfo[] props = boType.GetProperties();
                //( rows.Count
                _log.Log(String.Format("Querying cmd={0}", cmd.CommandText), "DB", 5 );
                for (int r = 0; r < rows.Count; r++)
                {
                    datarow = rows[r];

                    AbstractBusinessObject curr = (AbstractBusinessObject)cons.Invoke(null);
                    columns.Reset();
                    while (columns.MoveNext())
                    {
                        try
                        {
                            datacolumn = (DataColumn)columns.Current;
                            cname = datacolumn.ColumnName;
                            for (int i = 0; i < props.Length; i++)
                            {
                                if (props[i].Name.ToLower() == cname.ToLower())
                                {
                                    cvalue = Convert.ChangeType(datarow[datacolumn], props[i].PropertyType);
                                    props[i].SetValue(curr, cvalue, null);
                                    _log.Log(String.Format("\tName={0} Value={1}", cname, cvalue), "DB", 5);
                                    break; // break for loop
                                }
                            }
                        }
                        catch (InvalidCastException ivce)
                        {
                            // go to next column
                        }
                    }
                    abos.Add(curr);
                }
            }
            catch (Exception ex)
            {
                string logoutput = String.Format("----Error in BaseTableAdapter, Query----\r\n{0}\r\n{1}", ex.Message, ex.StackTrace);
                _log.Log(logoutput, "DB", 3);
                _log.Log(logoutput);
            }
            finally
            {
                adp.Dispose();
            }

            AbstractBusinessObject[] rc = (AbstractBusinessObject[])abos.ToArray(boType);
            return rc;
        }
コード例 #58
0
ファイル: DataProvider.cs プロジェクト: jssgarcia/ESLite
        esDataResponse IDataProvider.ExecuteReader(esDataRequest request)
        {
            esDataResponse response = new esDataResponse();
            SACommand cmd = null;

            try
            {
                cmd = new SACommand();
                if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;
                if (request.Parameters != null) Shared.AddParameters(cmd, request);

                switch (request.QueryType)
                {
                    case esQueryType.TableDirect:
                        cmd.CommandType = CommandType.TableDirect;
                        cmd.CommandText = request.QueryText;
                        break;

                    case esQueryType.StoredProcedure:
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.CommandText = Shared.CreateFullName(request);
                        break;

                    case esQueryType.Text:
                        cmd.CommandType = CommandType.Text;
                        cmd.CommandText = request.QueryText;
                        break;

                    case esQueryType.DynamicQuery:
                        cmd = QueryBuilder.PrepareCommand(request);
                        break;
                }

                cmd.Connection = new SAConnection(request.ConnectionString);
                cmd.Connection.Open();

                #region Profiling

                if (sTraceHandler != null)
                {
                    using (esTraceArguments esTrace = new esTraceArguments(request, cmd, "ExecuteReader", System.Environment.StackTrace))
                    {
                        try
                        {
                            response.DataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                        }
                        catch (Exception ex)
                        {
                            esTrace.Exception = ex.Message;
                            throw;
                        }
                    }
                }
                else

                #endregion Profiling

                {
                    response.DataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                }
            }
            catch (Exception ex)
            {
                CleanupCommand(cmd);
                response.Exception = ex;
            }

            return response;
        }
コード例 #59
0
        esDataResponse IDataProvider.ExecuteScalar(esDataRequest request)
        {
            esDataResponse response = new esDataResponse();
            SACommand cmd = null;

            try
            {
                cmd = new SACommand();
                if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;
                if (request.Parameters != null) Shared.AddParameters(cmd, request);

                switch (request.QueryType)
                {
                    case esQueryType.TableDirect:
                        cmd.CommandType = CommandType.TableDirect;
                        cmd.CommandText = request.QueryText;
                        break;

                    case esQueryType.StoredProcedure:
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.CommandText = Shared.CreateFullName(request);
                        break;

                    case esQueryType.Text:
                        cmd.CommandType = CommandType.Text;
                        cmd.CommandText = request.QueryText;
                        break;

                    case esQueryType.DynamicQuery:
                        cmd = QueryBuilder.PrepareCommand(request);
                        break;
                }

                try
                {
                    esTransactionScope.Enlist(cmd, request.ConnectionString, CreateIDbConnectionDelegate);

                    response.Scalar = cmd.ExecuteScalar();
                }
                finally
                {
                    esTransactionScope.DeEnlist(cmd);
                }

                if (request.Parameters != null)
                {
                    Shared.GatherReturnParameters(cmd, request, response);
                }
            }
            catch (Exception ex)
            {
                CleanupCommand(cmd);
                response.Exception = ex;
            }

            return response;
        }
コード例 #60
0
        // This is used only to execute the Dynamic Query API
        static private void LoadDataTableFromDynamicQuery(esDataRequest request, esDataResponse response, SACommand cmd)
        {
            try
            {
                response.LastQuery = cmd.CommandText;

                if (request.CommandTimeout != null) cmd.CommandTimeout = request.CommandTimeout.Value;

                DataTable dataTable = new DataTable(request.ProviderMetadata.Destination);

                SADataAdapter da = new SADataAdapter();
                da.SelectCommand = cmd;

                try
                {
                    esTransactionScope.Enlist(da.SelectCommand, request.ConnectionString, CreateIDbConnectionDelegate);
                    da.Fill(dataTable);
                }
                finally
                {
                    esTransactionScope.DeEnlist(da.SelectCommand);
                };

                response.Table = dataTable;
            }
            catch (Exception)
            {
                CleanupCommand(cmd);
                throw;
            }
            finally
            {

            }
        }