예제 #1
0
		public virtual void SetUp()
		{
			string cs = this.BuildConnectionString();

			CreateDatabase(cs);
			CreateTables(cs);
			InsertTestData(cs);
			CreateProcedures(cs);
			CreateTriggers(cs);

			this.connection = new FbConnection(cs);
			this.connection.Open();

			if (this.withTransaction)
			{
				this.transaction = this.connection.BeginTransaction();
			}
		}
    public void Commit(Enlistment enlistment)
    {
        if (_transaction != null && !_transaction.IsCompleted)
        {
            _transaction.Commit();
            _transaction = null;

            Completed?.Invoke(this, new EventArgs());

            if (_connection != null)
            {
                if (!_connection.Options.Pooling && (_connection.OwningConnection == null || _connection.OwningConnection.IsClosed))
                {
                    _connection.Disconnect();
                }
            }
            _connection        = null;
            _systemTransaction = null;

            // Declare done on the enlistment
            enlistment.Done();
        }
    }
        public void InvalidParameterFormat()
        {
            string sql = "update test set timestamp_field =	@timestamp where int_field = @integer";

            FbTransaction transaction = Connection.BeginTransaction();

            try
            {
                FbCommand command = new FbCommand(sql, Connection, transaction);
                command.Parameters.Add("@timestamp", FbDbType.TimeStamp).Value = 1;
                command.Parameters.Add("@integer", FbDbType.Integer).Value     = 1;

                command.ExecuteNonQuery();

                command.Dispose();

                transaction.Commit();
            }
            catch
            {
                transaction.Rollback();
            }
        }
예제 #4
0
        public bool runQuery(string query, bool showException)
        {
            myTransaction = myConnection.BeginTransaction();
            FbCommand command = new FbCommand(query, myConnection);

            command.CommandType = CommandType.Text;
            command.Transaction = myTransaction;
            try {
                command.ExecuteScalar();
            } catch (Exception ex) {
                // exception, query did not run
                if (Program.debug && showException)
                {
                    Console.Out.WriteLine(ex.ToString());
                }
                myTransaction.Commit();
                command.Dispose();
                return(false);
            }
            myTransaction.Commit();
            command.Dispose();
            return(true);
        }
예제 #5
0
        public int[] runQueryInt(string query, bool dataReturned)
        {
            List <int> Lint = new List <int>();

            openConnection();
            myTransaction = myConnection.BeginTransaction();
            FbCommand command = new FbCommand(query, myConnection);

            command.CommandType = CommandType.TableDirect;
            command.Transaction = myTransaction;
            using (IDataReader reader = command.ExecuteReader()) {
                while (reader.Read())
                {
                    Lint.Add((int)reader.GetInt16(0));
                }
            }
            myTransaction.Commit();
            command.Dispose();
            closeConnection();
            // clean up the query result array because the FetchSize
            // returns more than the actual number of rows with useful data
            return(Lint.ToArray());
        }
예제 #6
0
 public bool RollbackTran()
 {
     try
     {
         if (Transaction != null)
         {
             Transaction.Rollback();
             Transaction.Dispose();
             Transaction = null;
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception ex)
     {
         izuzeci.Add(ex);
         Korisno.LogujGresku("Nisam uspeo da rolbekujem transakciju.", ex);
         return(false);
     }
 }
예제 #7
0
        public void Update(FbTransaction trans = null)
        {
            string sql =
                $" update TB_CALIBRATOR_ROW set channel={Channel}, " +
                $" raw_a={RawA}, raw_b={RawB}, raw_c={RawC}, " +
                $" diff_a={DiffA}, diff_b={DiffB}, diff_c={DiffC}, " +
                $" where pk_recno={RecNo} ";

            SetTrans(trans);

            try
            {
                BeginTrans(trans);
                command.CommandText = sql;
                command.ExecuteNonQuery();
                CommitTrans(trans);
            }
            catch (Exception e)
            {
                Resource.TLog.Log((int)ELogItem.Error, sql);
                RollbackTrans(trans, e);
            }
        }
예제 #8
0
    public async Task <FbTransaction> BeginTransactionAsync(FbTransactionOptions options, string transactionName, CancellationToken cancellationToken = default)
    {
        EnsureActiveTransaction();

        try
        {
            _activeTransaction = new FbTransaction(_owningConnection, IsolationLevel.Unspecified);
            await _activeTransaction.BeginTransactionAsync(options, cancellationToken).ConfigureAwait(false);

            if (transactionName != null)
            {
                _activeTransaction.Save(transactionName);
            }
        }
        catch (IscException ex)
        {
            await DisposeTransactionAsync(cancellationToken).ConfigureAwait(false);

            throw FbException.Create(ex);
        }

        return(_activeTransaction);
    }
예제 #9
0
 public IEnumerable <Group> ReadGroups(int term)
 {
     if (Open())
     {
         using (FbTransaction dbtran = conn.BeginTransaction())
         {
             using (FbCommand selectCommand = new FbCommand())
             {
                 selectCommand.CommandText = "select id_group, name_of_group, term, id_department, name_of_department, id_faculty, name_of_faculty from (groups join departments using(id_department) join faculty using (id_faculty)) where term = @Term order by name_of_group";
                 selectCommand.Connection  = conn;
                 selectCommand.Transaction = dbtran;
                 selectCommand.Parameters.AddWithValue("@Term", term);
                 FbDataReader reader = selectCommand.ExecuteReader();
                 while (reader.Read())
                 {
                     yield return(new Group
                     {
                         CodeOfGroup = reader.GetInt32(0),
                         NameOfGroup = reader.GetString(1),
                         Term = reader.GetInt32(2),
                         Department = new Department
                         {
                             CodeOfDepartment = reader.GetInt32(3),
                             NameOfDepartment = reader.GetString(4),
                             Faculty = new Faculty
                             {
                                 CodeOfFaculty = reader.GetInt32(5),
                                 NameOfFaculty = reader.GetString(6)
                             }
                         },
                     });
                 }
             }
             dbtran.Commit();
         }
     }
 }
예제 #10
0
        public static short SetParamValues(string connectionString, short?placeId, int paramId, short datatypeId, string value)
        {
            using (FbConnection connection = new FbConnection(connectionString)) {
                connection.Open();

                short  result  = -1;
                string connStr = Properties.Resources.SetParamValues;
                using (FbCommand command = new FbCommand(connStr, connection)) {
                    FbTransaction transaction = connection.BeginTransaction();
                    command.Transaction = transaction;
                    command.ExecuteNonQuery();
                    transaction.Commit();
                }

                connStr = string.Format("SELECT * FROM SETPARAMVALUES({0}, {1}, {2}, '{3}')",
                                        (placeId.HasValue) ? placeId.ToString() : "NULL",
                                        paramId,
                                        datatypeId,
                                        value);
                using (FbCommand command = new FbCommand(connStr, connection)) {
                    FbTransaction transaction = connection.BeginTransaction();
                    command.Transaction = transaction;
                    result = (short)command.ExecuteScalar();
                    transaction.Commit();
                }

                connStr = "DROP PROCEDURE SETPARAMVALUES;";
                using (FbCommand command = new FbCommand(connStr, connection)) {
                    FbTransaction transaction = connection.BeginTransaction();
                    command.Transaction = transaction;
                    command.ExecuteNonQuery();
                    transaction.Commit();
                }

                return(result);
            }
        }
예제 #11
0
        //============================================================================
        /// <summary>
        /// Adds the value record to the AttrValues table for this timestep.
        /// </summary>
        /// <param name="RunID">Simulation run id.</param>
        /// <param name="eventTime">Record event time.</param>
        /// <param name="data">Byte array containing the TTypedValue data.</param>
        /// <param name="line">The values as a text string. Only used for DEBUG_WITH_STRINGS</param>
        //============================================================================
        public override void AddAttrValueRecord(int RunID, DateTime eventTime, Byte[] data, String line)
        {
            // This operation should be as fast as possible.
            try
            {
                FbDataAdapter valueDA = new FbDataAdapter();
                FbTransaction txn     = fbConn.BeginTransaction();

                valueDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;

#if DEBUG_WITH_STRINGS
                valueDA.InsertCommand = new FbCommand("INSERT INTO AttrValues (run_id, event_time, string_val) " +
                                                      "VALUES (?, ?, ?)");
#else
                valueDA.InsertCommand = new FbCommand("INSERT INTO AttrValues (run_id, event_time, string_val) " +
                                                      "VALUES (?, ?, ?)");
#endif
                valueDA.InsertCommand.Parameters.Add("@runid", FbDbType.Integer, 4, "run_id").Value      = RunID;
                valueDA.InsertCommand.Parameters.Add("@eventtime", FbDbType.Date, 8, "event_time").Value = eventTime;
#if DEBUG_WITH_STRINGS
                valueDA.InsertCommand.Parameters.Add("@stringval", FbDbType.VarChar, line.Length, "string_val").Value = line;
#else
                valueDA.InsertCommand.Parameters.Add("@blobval", FbDbType.Binary, data.Length, "blob_val").Value = data;
#endif
                //now write the values
                valueDA.InsertCommand.Connection  = fbConn;
                valueDA.InsertCommand.Transaction = txn;
                openConnection();

                valueDA.InsertCommand.ExecuteNonQuery();
                txn.Commit();
            }
            catch (Exception excep)
            {
                throw (new ApplicationException(excep.Message));
            }
        }
예제 #12
0
        public void reQry(DataTable dataTable, FbCommand fbCommand)
        {
            Program.MF.startSW();
            int nor = 0;

            Cursor.Current = Cursors.WaitCursor;

            FbConnection c = new FbConnection(Properties.Settings.Default.ConnectionString);

            c.Open();
            FbTransaction trans = c.BeginTransaction();

            try
            {
                fbCommand.CommandType = CommandType.Text;
                fbCommand.Connection  = c;
                fbCommand.Transaction = trans;

                FbDataAdapter fbDataAdapter = new FbDataAdapter();
                fbDataAdapter.SelectCommand = fbCommand;
                nor = fbDataAdapter.Fill(dataTable);

                trans.Commit();
                fbCommand.Parameters["@LM_TS"].Value = (DateTime)Program.MF.mainQueriesTableAdapter.GET_SERVERTIME();
                //Program.MF.Text = nor.ToString() + " reread  " + fbCommand.Parameters["@LM_TS"].Value.ToString() + "  " + fbCommand.CommandText;
            }
            catch
            {
                trans.Rollback();
            }
            finally
            {
                c.Close();
                Cursor.Current = Cursors.Default;
                Program.MF.stopSW("Query", nor);
            }
        }
예제 #13
0
        public int insertarDetalleMovArticulo(int idMovArt, Item articulo)
        {
            try
            {
                int id = 0;
                open();
                String       sqlQuery   = "select next value for GEN_NUM_DET_MOV_ARTICULOS from RDB$DATABASE";
                FbCommand    sqlCommand = new FbCommand(sqlQuery, connection);
                FbDataReader idReader   = sqlCommand.ExecuteReader();

                while (idReader.Read())
                {
                    id = idReader.GetInt32(0);
                }
                idReader.Close();

                FbTransaction insertTransaction = connection.BeginTransaction();
                FbCommand     insertCommand     = new FbCommand();
                insertCommand.CommandText = "insert into DET_MOV_ARTICULOS (NUMERO,NROINT,ARTICU,CANTID,CTRCOM,TRANID,STKFIS) values" +
                                            " (" + id + "," + idMovArt + ",'" + articulo.codigoArticulo + "'," + articulo.cantidad + ","
                                            + id + "," + 0 + "," + 0 + ")";
                insertCommand.Connection  = connection;
                insertCommand.Transaction = insertTransaction;

                insertCommand.ExecuteNonQuery();
                insertTransaction.Commit();
                insertCommand.Dispose();
                close();
                return(id);
            }
            catch (Exception e)
            {
                return(0);

                throw new Exception(e.Message.ToString());
            }
        }
예제 #14
0
 public void Update(Car car)
 {
     if (db.State != ConnectionState.Open)
     {
         db.Open();
     }
     using (FbTransaction trn = db.BeginTransaction())
     {
         FbCommand command = new FbCommand("UPDATE_CAR_PROCEDURE", db, trn);
         command.CommandType = CommandType.StoredProcedure;
         command.Parameters.Add("@VIN", FbDbType.VarChar).Value             = car.CarVIN;
         command.Parameters.Add("@STATE_NUMBER", FbDbType.VarChar).Value    = car.Number;
         command.Parameters.Add("@REG_CERTIFICATE", FbDbType.VarChar).Value = car.RegCertific;
         command.Parameters.Add("@CAR_MARK", FbDbType.VarChar).Value        = car.Mark;
         command.Parameters.Add("@CAR_MODEL", FbDbType.VarChar).Value       = car.Model;
         if (car.Owner != null)
         {
             command.Parameters.Add("@CLIENT_ID", FbDbType.SmallInt).Value = car.Owner.IdCompany;
         }
         else
         {
             command.Parameters.Add("@CLIENT_ID", FbDbType.SmallInt).Value = DBNull.Value;
         }
         try
         {
             command.ExecuteNonQuery();
             trn.Commit();
         }
         catch (Exception ex)
         {
             db.Close();
             throw ex;
         }
         db.Close();
         return;
     }
 }
        public void NextResultTest()
        {
            string querys = "select * from TEST order by INT_FIELD asc;" +
                            "select * from TEST order by INT_FIELD desc;";

            FbTransaction transaction = Connection.BeginTransaction();
            FbCommand     command     = new FbCommand(querys, Connection, transaction);

            FbDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    Console.Write(reader.GetValue(i) + "\t");
                }
                Console.WriteLine();
            }

            Console.WriteLine("===");

            if (reader.NextResult())
            {
                while (reader.Read())
                {
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        Console.Write(reader.GetValue(i) + "\t");
                    }
                    Console.WriteLine();
                }
            }

            reader.Close();
            transaction.Rollback();
            command.Dispose();
        }
예제 #16
0
        public List <Sostzakaz> GetSostzakaz()
        {
            FbConnection     connection = connect.connection;
            List <Sostzakaz> sostzakaz  = new List <Sostzakaz>();

            try
            {
                connection.Open();

                FbTransaction transaction = connection.BeginTransaction();
                FbCommand     command     = new FbCommand("SELECT * FROM SOSTZAKAZ", connection, transaction);
                FbDataReader  reader      = command.ExecuteReader();

                while (reader.Read())
                {
                    Sostzakaz zakaz = new Sostzakaz()
                    {
                    };

                    zakaz.SOSTZAKAZID = reader.GetInt32(0);
                    zakaz.SOSTZAKAZ   = reader.GetString(1);
                    zakaz.COLOR       = reader.IsDBNull(2) ? (int?)null : reader.GetInt32(2);

                    sostzakaz.Add(zakaz);
                }

                reader.Close();
                connection.Close();
            }
            catch (Exception ex)
            {
                logger.Error(ex.ToString());
                connection.Close();
            }

            return(sostzakaz);
        }
예제 #17
0
        /// <summary>
        /// оновити статус завдання
        /// </summary>
        /// <param name="taskFields">перелік значень полів для оновлення</param>
        public void UpdateTaskManager(List <string> taskFields)
        {
            if (taskFields.Count != 4)
            {
                return;
            }
            DateTime dt1 = new DateTime();

            dt1 = DateTime.Now;
            string       connectionString = cs.ToString();
            FbConnection connection       = new FbConnection(connectionString);

            connection.Open();
            string ins_str;

            ins_str = @"UPDATE TASKS SET COMMITMAKE=@COMMITMAKE, COMMITDATE=@COMMITDATE WHERE ID=@ID";
            if (taskFields[3].Equals("0"))
            {
                ins_str = @"UPDATE TASKS SET COMMITMAKE=@COMMITMAKE, COMMITDATE = NULL WHERE ID=@ID";
            }
            FbTransaction ins_tr  = connection.BeginTransaction();
            FbCommand     ins_com = new FbCommand(ins_str, connection, ins_tr);

            ins_com.Parameters.Add(new FbParameter("@ID", taskFields[0]));
            ins_com.Parameters.Add(new FbParameter("@COMMITMAKE", taskFields[3]));
            ins_com.Parameters.Add(new FbParameter("@COMMITDATE", dt1.ToShortDateString()));
            try
            {
                ins_com.ExecuteNonQuery();
                ins_tr.Commit();
            }
            catch (Exception e)
            {
                ins_tr.Rollback();
            }
            connection.Close();
        }
예제 #18
0
        public void BinaryBlobTest()
        {
            int id_value = GetId();

            string selectText = "SELECT blob_field FROM TEST WHERE int_field = " + id_value.ToString();
            string insertText = "INSERT INTO TEST (int_field, blob_field) values(@int_field, @blob_field)";

            // Generate an array of temp data
            byte[] insert_values         = new byte[100000 * 4];
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();

            rng.GetBytes(insert_values);

            // Execute insert command
            FbTransaction transaction = Connection.BeginTransaction();

            FbCommand insert = new FbCommand(insertText, Connection, transaction);

            insert.Parameters.Add("@int_field", FbDbType.Integer).Value = id_value;
            insert.Parameters.Add("@blob_field", FbDbType.Binary).Value = insert_values;
            insert.ExecuteNonQuery();

            transaction.Commit();

            // Check that inserted values are correct
            FbCommand select = new FbCommand(selectText, Connection);

            byte[] select_values = (byte[])select.ExecuteScalar();

            for (int i = 0; i < insert_values.Length; i++)
            {
                if (insert_values[i] != select_values[i])
                {
                    throw new Exception("differences at index " + i.ToString());
                }
            }
        }
        public void GetValuesTest()
        {
            FbTransaction transaction = Connection.BeginTransaction();

            FbCommand command = new FbCommand("select * from TEST", Connection, transaction);

            IDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                object[] values = new object[reader.FieldCount];
                reader.GetValues(values);

                for (int i = 0; i < values.Length; i++)
                {
                    Console.Write(values[i] + "\t");
                }
                Console.WriteLine();
            }

            reader.Close();
            transaction.Rollback();
            command.Dispose();
        }
예제 #20
0
        /////////////////////////////////////////////////////////////////////////////////////
        private int exec_proc_ADD_COMMON(ref FbConnection Connection, ref FbTransaction Transaction, ref BattleResult_v2 BRv2)
        {
            FbCommand myCommand = new FbCommand();

            myCommand.CommandText = "execute procedure ADD_COMMON ("
                                    + BRv2.ArenaUniqueID.ToString() + ","
                                    + BRv2.Common["arenaTypeID"].ToString() + ","
                                    + BRv2.Common["arenaCreateTime"].ToString() + ","
                                    + BRv2.Common["winnerTeam"].ToString() + ","
                                    + BRv2.Common["finishReason"].ToString() + ","
                                    + BRv2.Common["duration"].ToString(cultureUS) + ","
                                    + BRv2.Common["bonusType"].ToString() + ","
                                    + BRv2.Common["guiType"].ToString() + ","
                                    + BRv2.Common["vehLockMode"].ToString() + ")";

            myCommand.Connection  = Connection;
            myCommand.Transaction = Transaction;

            Int32 BATTLE_ID = (Int32)myCommand.ExecuteScalar();

            myCommand.Dispose();

            return(BATTLE_ID);
        }
예제 #21
0
        private void updateExams()
        {
            user_exams.Clear();
            if (fb.State == ConnectionState.Closed)
            {
                fb.Open();
            }
            FbTransaction fbt       = fb.BeginTransaction();
            FbCommand     SelectSQL = new FbCommand("SELECT id, course_id, exam_time FROM final_exams WHERE user_id = " + userid, fb);

            SelectSQL.Transaction = fbt;
            FbDataReader reader = SelectSQL.ExecuteReader();

            while (reader.Read())
            {
                user_exams.Rows.Add(int.Parse(reader[0].ToString()), int.Parse(reader[1].ToString()), reader[2].ToString());
            }
            reader.Close();
            SelectSQL.Dispose();
            fbt.Commit();
            fb.Close();

            updateForm();
        }
예제 #22
0
        public FinalExamForm(int userid)
        {
            InitializeComponent();

            user_exams.Columns.Add("id", typeof(int));
            user_exams.Columns.Add("course_id", typeof(int));
            user_exams.Columns.Add("exam_time", typeof(string));

            this.userid = userid;

            fb.Open();
            FbTransaction fbt       = fb.BeginTransaction();
            FbCommand     SelectSQL = new FbCommand("SELECT * FROM users WHERE id = " + this.userid, fb);

            SelectSQL.Transaction = fbt;
            FbDataReader reader = SelectSQL.ExecuteReader();

            reader.Read();
            UserNameLabel.Text = reader[2].ToString() + " " + reader[1].ToString() + " " + reader[3].ToString();
            reader.Close();
            SelectSQL.Dispose();
            fbt.Commit();
            fb.Close();
        }
예제 #23
0
        private void CreateExamButton_Click(object sender, EventArgs e)
        {
            metroButton1.Select();
            if (CourseComboBox.Text.Length < 1)
            {
                MessageBox.Show("Выберите курс!");
                return;
            }

            string questions = get_questions(int.Parse(CourseComboBox.SelectedValue.ToString()));

            if (fb.State == ConnectionState.Closed)
            {
                fb.Open();
            }
            FbTransaction fbt       = fb.BeginTransaction();
            FbCommand     InsertSQL = new FbCommand("INSERT INTO final_exams VALUES (0, @USER_ID, @COURSE_ID, @QUESTIONS, @NOTHING, @NOTHING)", fb);

            InsertSQL.Parameters.Add("USER_ID", FbDbType.Integer).Value   = userid;
            InsertSQL.Parameters.Add("COURSE_ID", FbDbType.Integer).Value = int.Parse(CourseComboBox.SelectedValue.ToString());
            InsertSQL.Parameters.Add("NOTHING", FbDbType.Text).Value      = "";
            InsertSQL.Parameters.Add("QUESTIONS", FbDbType.Text).Value    = questions;
            InsertSQL.Transaction = fbt;

            try
            {
                int res = InsertSQL.ExecuteNonQuery();
                MessageBox.Show("Добавлено!");
                fbt.Commit();
                InsertSQL.Dispose();
                fb.Close();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }

            updateExams();
        }
예제 #24
0
        public void ComandoLoteScript(string SQL)
        {
            FbConnection connection = new FbConnection(connectionString);

            connectionString = BmsSoftware.ConfigSistema1.Default.ConexaoFB + txtLocalBancoDados.Text;
            try
            {
                connection.Open();
                FbTransaction transaction = connection.BeginTransaction();

                FbCommand command = new FbCommand(SQL, connection, transaction);
                command.CommandType = CommandType.Text;

                command.ExecuteScalar();

                transaction.Commit();
                connection.Close();
            }
            catch (Exception)
            {
                if (connection != null)
                {
                    if (connection.State != ConnectionState.Closed)
                    {
                        connection.Close();
                    }
                }


                MessageBox.Show("Não foi possível executar o Script!",
                                BmsSoftware.ConfigSistema1.Default.NomeEmpresa,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error,
                                MessageBoxDefaultButton.Button1);
            }
        }
예제 #25
0
        public static void SavePointList(Database database, List <PermitPoint> pointList)
        {
            string query = EntryControl.Resources.Doc.Permit.SetPermitPoint;

            using (FbConnection connection = new FbConnection(database.ConnectionString))
            {
                FbCommand command = new FbCommand(query, connection);
                command.Parameters.AddWithValue("permit", 0);
                command.Parameters.AddWithValue("point", 0);
                command.Parameters.AddWithValue("isAllowed", 0);

                connection.Open();
                FbTransaction transaction = connection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);

                try
                {
                    foreach (PermitPoint pp in pointList)
                    {
                        command.Parameters["permit"].Value    = pp.Permit.Id;
                        command.Parameters["point"].Value     = pp.Point.Id;
                        command.Parameters["isAllowed"].Value = (short)(pp.IsAllowed ? 1 : 0);

                        command.ExecuteNonQuery();
                    }

                    transaction.Commit();
                    connection.Close();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    connection.Close();
                    throw new Exception(EntryControl.Resources.Message.Error.SavingError);
                }
            }
        }
예제 #26
0
        /// <summary>
        /// записати нове заавдання
        /// </summary>
        /// <param name="newTask">перелік значень полів</param>
        public void InsertTask(List <string> newTask)
        {
            if (newTask.Count != 8)
            {
                return;
            }
            DateTime dt1 = new DateTime();

            dt1 = DateTime.Now;
            string       newId            = GenerateNewID();
            string       connectionString = cs.ToString();
            FbConnection connection       = new FbConnection(connectionString);

            connection.Open();
            string ins_str;

            ins_str = @"INSERT INTO TASKS(ID, SUBJECT, SHORTDESCRIPTION, EXECUTORID, DEADLINE, MANAGERID, DATEINIT, PRIORITY, DATEDOC, NUMBERDOC)
VALUES (@ID, @SUBJECT, @SHORTDESCRIPTION, @EXECUTORID, @DEADLINE, @MANAGERID, @DATEINIT, @PRIORITY, @DATEDOC, @NUMBERDOC)";
            FbTransaction ins_tr  = connection.BeginTransaction();
            FbCommand     ins_com = new FbCommand(ins_str, connection, ins_tr);

            ins_com.Parameters.Add(new FbParameter("@ID", newId));
            ins_com.Parameters.Add(new FbParameter("@SUBJECT", newTask[0]));
            ins_com.Parameters.Add(new FbParameter("@SHORTDESCRIPTION", newTask[1]));
            ins_com.Parameters.Add(new FbParameter("@EXECUTORID", newTask[2]));
            ins_com.Parameters.Add(new FbParameter("@DEADLINE", newTask[3]));
            ins_com.Parameters.Add(new FbParameter("@MANAGERID", newTask[4]));
            ins_com.Parameters.Add(new FbParameter("@DATEINIT", dt1.ToShortDateString()));
            ins_com.Parameters.Add(new FbParameter("@PRIORITY", newTask[5]));
            ins_com.Parameters.Add(new FbParameter("@DATEDOC", newTask[6]));
            ins_com.Parameters.Add(new FbParameter("@NUMBERDOC", newTask[7]));
            ins_com.ExecuteNonQuery();
            ins_tr.Commit();
            connection.Close();
            SaveSubject(newTask[0]);
        }
예제 #27
0
        private FbTransaction GetTransaction(bool readable = true)
        {
            if (readable)
            {
                if (write_transaction != null)
                {
                    // if(conn.)
                    write_transaction.RollbackRetaining();
                    write_transaction.Dispose();
                }

                var tro = new FbTransactionOptions()
                {
                    TransactionBehavior = FbTransactionBehavior.Read | FbTransactionBehavior.ReadCommitted | FbTransactionBehavior.RecVersion
                };

                read_transaction = conn.BeginTransaction(tro);
                return(read_transaction);
            }
            else
            {
                if (read_transaction != null)
                {
                    read_transaction.CommitRetaining();
                    read_transaction.Dispose();
                }

                var tro = new FbTransactionOptions()
                {
                    TransactionBehavior = FbTransactionBehavior.NoWait | FbTransactionBehavior.ReadCommitted | FbTransactionBehavior.RecVersion
                };

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

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

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

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

                        transaction.Commit();
                    }
                }
            }
        }
예제 #29
0
        public void FillMultipleTest()
        {
            FbTransaction transaction = this.Connection.BeginTransaction();
            FbCommand     command     = new FbCommand("select * from TEST", Connection, transaction);
            FbDataAdapter adapter     = new FbDataAdapter(command);

            adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

            FbCommandBuilder builder = new FbCommandBuilder(adapter);

            DataSet ds1 = new DataSet();
            DataSet ds2 = new DataSet();

            adapter.Fill(ds1, "TEST");
            adapter.Fill(ds2, "TEST");

            Assert.AreEqual(100, ds1.Tables["TEST"].Rows.Count, "Incorrect row count (ds1)");
            Assert.AreEqual(100, ds2.Tables["TEST"].Rows.Count, "Incorrect row count (ds2)");

            adapter.Dispose();
            builder.Dispose();
            command.Dispose();
            transaction.Commit();
        }
예제 #30
0
        public void EndTransaction()
        {
            try
            {
                // Comita a transação
                if (dbTransaction != null)
                {
                    if (dbTransaction.Connection != null)
                    {
                        dbTransaction.Commit();
                        dbTransaction = null;
                    }
                }
            }
            catch (Exception e)
            {
                this.RollbackTransaction();
                throw e;
            }

            try
            {
                // Fecha a conexão
                if (dbCnn != null)
                {
                    if (dbCnn.State != ConnectionState.Closed)
                    {
                        dbCnn.Close();
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
예제 #31
0
        /// <summary>
        /// Проверяет наличие дубликата файла
        /// </summary>
        /// <param name="taskName">Имя задачи</param>
        /// <param name="filePath">Путь к файлу</param>
        /// <returns></returns>
        public static bool CheckForDuplicate(string taskName, string filePath)
        {
            string fileName = Path.GetFileName(filePath);
            string hash     = Pbkdf2Cryptography.GetMD5Hash(File.ReadAllBytes(filePath));
            string connStr  = @"SELECT 1 FROM " + taskName +
                              @" WHERE FILENAME = '" + fileName + "' " +
                              @"AND HASH = '" + hash + "'";
            object result;

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

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

                        transaction.Rollback();
                    }
                }
            }

            return(result != null);
        }