示例#1
1
#pragma warning restore 649

		public override void CreateDatabase(string constr)
		{
			var csb = new FbConnectionStringBuilder(constr) { Pooling = false };

			FbConnection.CreateDatabase(csb.ConnectionString, 16384, false, true);

			using (var con = new FbConnection(csb.ConnectionString))
			using (var cmd = con.CreateCommand())
			{
				con.Open();

				#region bug drug block
				//cmd.CommandText = @"CREATE TABLE crdb (tid INTEGER, name CHAR(120));";
				//cmd.ExecuteScalar();
				//cmd.CommandText = @"DROP TABLE crdb;";
				//cmd.ExecuteScalar();
				#endregion

				#region init actions: register udf functions
				cmd.CommandText =
					@"
					DECLARE EXTERNAL FUNCTION strlen 
						CSTRING(32767)
						RETURNS INTEGER BY VALUE
						ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';";
				cmd.ExecuteScalar();
				#endregion
			}
		}
示例#2
1
        private List<object[]> QueryFb(string connectionstring, string query)
        {
            try
            {
                using (FbConnection dbConn = new FbConnection(connectionstring))
                {
                    Console.WriteLine("Consultando Control Escolar");

                    dbConn.Open();

                    using (var command = dbConn.CreateCommand())
                    {
                        command.CommandText = query;
                        using (var reader = command.ExecuteReader())
                        {
                            var rows = new List<object[]>();
                            while (reader.Read())
                            {
                                var columns = new object[reader.FieldCount];
                                reader.GetValues(columns);
                                rows.Add(columns);
                            }
                            return rows;
                        }
                    }
                }

            }catch(System.Exception oe)
            {
                throw new Exception(oe.Message);
            }
        }
示例#3
0
        private FbOptions GetSettings(string connectionString)
        {
            if (string.IsNullOrWhiteSpace(connectionString))
            {
                connectionString = Settings.Connection.ConnectionString;
            }
            if (ServerVersion != null)
            {
                return(this);
            }

            try
            {
                using (var connection = new Firebird.FbConnection(connectionString))
                {
                    connection.Open();
                    ServerVersion = Data.FbServerProperties.ParseServerVersion(connection.ServerVersion);
                    using (var cmd = connection.CreateCommand())
                    {
                        cmd.CommandText = "SELECT MON$SQL_DIALECT FROM MON$DATABASE";
                        IsLegacyDialect = Convert.ToInt32(cmd.ExecuteScalar()) == 1;
                    }
                    connection.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(this);
        }
        //1 - exclusivo 0 - compartilhado
        public static void VerificaProprietario(string nomeEntidade, FbConnection conn, ref bool empresa, ref bool filial)
        {
            ConfigurarDicionario();

            if(conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }

            using(FbCommand comando = conn.CreateCommand())
            {
                string nomeTabela = dicionario[nomeEntidade];

                comando.CommandText = "SELECT ACESSOEMPRESA, ACESSOFILIAL FROM SYS_TABLES WHERE ENTIDADE = @ENTIDADE";
                comando.Parameters.AddWithValue("@ENTIDADE", nomeTabela);

                using (FbDataReader leitor = comando.ExecuteReader())
                {
                    if (leitor.HasRows)
                    {
                        int indexEmpresa = leitor.GetOrdinal("ACESSOEMPRESA");
                        int indexFilial = leitor.GetOrdinal("ACESSOFILIAL");

                        while (leitor.Read())
                        {
                            empresa = Convert.ToBoolean(leitor.GetInt32(indexEmpresa));
                            filial = Convert.ToBoolean(leitor.GetInt32(indexFilial));
                        }   
                    }
                }
            }
        }
示例#5
0
        private string GetJson(string CommandText, string ParentNodeName, params FbParameter[] pars)
        {
            FbConnectionStringBuilder connString = TeeboaConnection.ConnectionString;
            using (FbConnection conn = new FbConnection(connString.ToString()))
            {
                using (FbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = CommandText;

                    for (int i = 0; i < pars.Length; i++)
                    {
                        cmd.Parameters.Add(pars[i]);
                    }
                    try
                    {
                        conn.Open();
                        using (FbDataReader dr = cmd.ExecuteReader())
                        {
                            return ParentNodeName == string.Empty ? stringify(dr) : stringify(dr, ParentNodeName);
                        }
                    }
                    catch (Exception ex)
                    {
                        return string.Format("Message: {1}{0}Method: {2}{0}", "<br />", ex.Message, ex.TargetSite);
                    }
                }
            }
        }
        private void CreateTestTablesFb2(string connectionString)
        {
            using (var con = new FbConnection(connectionString))
            using (var command = con.CreateCommand())
            {
                var sb = new StringBuilder();

                sb.Append("recreate table test(");
                sb.Append("int_test integer default 0 not null primary key,");
                sb.Append("bigint_test bigint,");
                sb.Append("blob_test blob,");
                sb.Append("char_test char(20),");
                sb.Append("date_test date,");
                sb.Append("decimal_test decimal,");
                sb.Append("double_test double precision,");
                sb.Append("float_test float,");
                sb.Append("numeric_test numeric,");
                sb.Append("smallint_test smallint,");
                sb.Append("time_test time,");
                sb.Append("timestamp_test timestamp,");
                sb.Append("varchar_test varchar(100)");
                sb.Append(")");

                command.CommandText = sb.ToString();
                con.Open();
                command.ExecuteNonQuery();
            }
        }
        public IEnumerable<ColumInfo> GetColums(FbConnection con)
        {
            using (var command = con.CreateCommand())
            {
                command.CommandText =
                    $"select trim(rf.rdb$field_name) Name, f.rdb$field_type Type, f.rdb$field_sub_type SubType , f.rdb$character_length CharSize, trim(rf.rdb$field_source) FieldSource, rf.rdb$null_flag NullFlag, f.rdb$field_precision FieldPrecision, f.rdb$field_scale FieldScale, f.rdb$field_length FieldLength " +
                        "from rdb$relation_fields rf " +
                        "join rdb$relations r on rf.rdb$relation_name = r.rdb$relation_name " +
                                            "and r.rdb$view_blr is not null " +
                                            "and r.rdb$relation_type = 1 and r.rdb$system_flag = 0 " +
                        "join rdb$fields f on f.rdb$field_name = rf.rdb$field_source " +
                     $"where rf.rdb$relation_name = '{this.ViewName}' " +
                      "order by rf.rdb$field_position; ";
                var reader = command.ExecuteReader();
                while (reader.Read())
                {
                    var size = (reader["CharSize"] == DBNull.Value) ? null : (short?)reader["CharSize"];
                    var subType = (reader["SubType"] == DBNull.Value) ? null : (short?)reader["SubType"];
                    var nullFlag = reader["NullFlag"] == DBNull.Value;
                    var precision = (reader["FieldPrecision"] == DBNull.Value) ? null : (short?)reader["FieldPrecision"];
                    var scale = (reader["FieldScale"] == DBNull.Value) ? null : (short?)reader["FieldScale"];
                    var fieldLength = (reader["FieldLength"] == DBNull.Value) ? null : (short?)reader["FieldLength"];
                    var type = new FieldType((short)reader["Type"], subType, size, precision, scale, fieldLength);

                    yield return new ColumInfo((string)reader["Name"], type, null, (string)reader["FieldSource"], nullFlag, true, "");
                }
            }
        }
 public IEnumerable<DomainInfo> GetDomain(FbConnection con)
 {
     using (var command = con.CreateCommand())
     {
         command.CommandText =
              $"select distinct f.rdb$field_type Type, f.rdb$field_sub_type SubType , f.rdb$character_length CharSize, trim(f.rdb$field_name) FieldName, f.rdb$field_precision FieldPrecision, f.rdb$field_scale FieldScale, f.rdb$field_length FieldLength, coalesce(f.rdb$validation_source, '') ValidationSource, coalesce(f.rdb$default_source, '') DefaultSource, f.rdb$null_flag NullFlag " +
               "from rdb$fields f " +
              $"where f.rdb$FIELD_NAME not starting with 'RDB$' and f.rdb$FIELD_NAME not starting with 'MON$' and f.rdb$FIELD_NAME not starting with 'SEC$' " +
               "order by f.rdb$field_name; ";
         var reader = command.ExecuteReader();
         while (reader.Read())
         {
             var name = (string)reader["FieldName"];
             var size = (reader["CharSize"] == DBNull.Value) ? null : (short?)reader["CharSize"];
             var subType = (reader["SubType"] == DBNull.Value) ? null : (short?)reader["SubType"];
             var precision = (reader["FieldPrecision"] == DBNull.Value) ? null : (short?)reader["FieldPrecision"];
             var scale = (reader["FieldScale"] == DBNull.Value) ? null : (short?)reader["FieldScale"];
             var fieldLength = (reader["FieldLength"] == DBNull.Value) ? null : (short?)reader["FieldLength"];
             var type = new FieldType((short)reader["Type"], subType, size, precision, scale, fieldLength);
             var validationSource = (string)reader["ValidationSource"];
             var defaultSource = (string)reader["DefaultSource"];
             var nullFlag = reader["NullFlag"] == DBNull.Value;
             yield return new DomainInfo(name, type, validationSource, defaultSource, nullFlag);
         }
     }
 }
示例#9
0
文件: Program.cs 项目: nate0001/AIR
        private static void Main(string[] args)
        {
            if (File.Exists("Data/database.fdb"))
            {
                File.Delete("Data/database.fdb");
            }

            FbConnection.CreateDatabase(GetConnectionString());

            using (var conn = new FbConnection(GetConnectionString()))
            {
                conn.Open();
                if (File.Exists("Data/database.sql"))
                {
                    var file = new FileInfo("Data/database.sql");
                    string script = file.OpenText().ReadToEnd();

                    using (FbCommand createTable = conn.CreateCommand())
                    {
                        createTable.CommandText = script;
                        createTable.ExecuteNonQuery();
                    }
                }
            }
        }
示例#10
0
文件: Program.cs 项目: kowill/Sample
        static void Main(string[] args)
        {
            var builder = new FbConnectionStringBuilder();
            builder.DataSource = "localhost";
            builder.Database = @"D:\DB\FB3_EXTERNAL_TEST.FDB";
            builder.Charset = FbCharset.Utf8.ToString();
            builder.UserID = "SYSDBA";
            builder.ServerType = FbServerType.Embedded;
            builder.ClientLibrary = @"fb\fbclient.dll";

            //DB作成
            if (!File.Exists(builder.Database))
            {
                FbConnection.CreateDatabase(builder.ConnectionString);
            }

            //create procesure
            var dllPath = new Uri(new Uri(Assembly.GetEntryAssembly().Location), @"../../Fb/plugins/FbExternalSample.dll").LocalPath;
            var createSqls = new FbHelper().GetCreateStatements(dllPath);
            using (var con = new FbConnection(builder.ConnectionString))
            using (var command = con.CreateCommand())
            {
                con.Open();
                foreach (var sql in createSqls)
                {
                    command.CommandText = sql;
                    command.ExecuteNonQuery();
                }
            }

            //実行
            var sqls = new[] { "SELECT * FROM HellowWorld('Taro')", "SELECT * FROM GetNumbers(5)", "SELECT * FROM GetDemo('やったぜ!')" };

            using (var con = new FbConnection(builder.ConnectionString))
            using (var command = con.CreateCommand())
            {
                con.Open();

                foreach (var sql in sqls)
                {
                    Console.WriteLine("- SQL -");
                    Console.WriteLine(sql);
                    Console.WriteLine("- 実行結果 -");
                    command.CommandText = sql;
                    var reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        var result = "";
                        for (var i = 0; i < reader.FieldCount; i++)
                        {
                            result += $" {reader[i]}";
                        }
                        Console.WriteLine(result);
                    }
                    Console.WriteLine("------------------------------------");
                }
            }

            Console.Read();
        }
 public string GetDefaultCharSet(FbConnection con)
 {
     using (var command = con.CreateCommand())
     {
         command.CommandText = @"select RDB$CHARACTER_SET_NAME CharSet from RDB$DATABASE";
         return command.ExecuteScalar() as string ?? "UTF8";
     }
 }
 public IEnumerable<IndexInfo> GetIndex(FbConnection con)
 {
     using (var command = con.CreateCommand())
     {
         command.CommandText =
             "select trim(idx.rdb$index_name) Name, trim(seg.rdb$field_name) FiledName, rel.rdb$constraint_type ConstraintType, trim(rdb$foreign_key) ForeignKey, trim(ref.rdb$update_rule) UpdateRule, trim(ref.rdb$delete_rule) DeleteRule " +
             "from rdb$indices idx " +
             "left outer join rdb$index_segments seg on idx.rdb$index_name = seg.rdb$index_name " +
             "left outer join rdb$relation_constraints rel on idx.rdb$index_name = rel.rdb$index_name " +
             "left outer join rdb$ref_constraints ref on ref.rdb$constraint_name = rel.rdb$constraint_name " +
             $"where idx.rdb$relation_name = '{this.TableName}' and idx.rdb$system_flag = 0 order by seg.rdb$field_position";
         var reader = command.ExecuteReader();
         var tmpName = "";
         IndexInfo tmpInf = null;
         while (reader.Read())
         {
             if (tmpName == (string)reader["Name"])
             {
                 tmpInf.FieldNames.Add((string)reader["FiledName"]);
             }
             else
             {
                 if (tmpInf != null)
                 {
                     tmpName = "";
                     yield return tmpInf;
                 }
                 tmpInf = new IndexInfo();
                 tmpName = (string)reader["Name"];
                 tmpInf.Name = tmpName;
                 var constraintType = reader["ConstraintType"] == DBNull.Value ? "" : (string)(reader["ConstraintType"]);
                 tmpInf.Kind = GetConstraintType(constraintType);
                 tmpInf.TableName = this.TableName;
                 if (tmpInf.Kind == ConstraintsKind.Foreign)
                 {
                     tmpInf.ForigenKeyName = (string)reader["ForeignKey"];
                     tmpInf.UpdateRule = (string)reader["UpdateRule"] == "RESTRICT" ? "" : (string)reader["UpdateRule"];
                     tmpInf.DeleteRule = (string)reader["DeleteRule"] == "RESTRICT" ? "" : (string)reader["DeleteRule"];
                 }
                 tmpInf.FieldNames.Add((string)reader["FiledName"]);
             }
         }
         if (tmpInf != null)
         {
             yield return tmpInf;
         }
     }
 }
示例#13
0
        public IEnumerable<Tuple<BlockchainKey, BlockchainMetadata>> ListBlockchains()
        {
            CheckDatabaseFolder();

            foreach (var file in Directory.EnumerateFiles(this.dbFolderPath, "Blockchain_*.fdb"))
            {
                var results = new List<Tuple<BlockchainKey, BlockchainMetadata>>();
                try
                {
                    var connString = @"ServerType=1; DataSource=localhost; Database={0}; Pooling=false; User=SYSDBA; Password=NA;".Format2(file);
                    using (var conn = new FbConnection(connString))
                    {
                        conn.Open();

                        using (var cmd = conn.CreateCommand())
                        {
                            cmd.CommandText = @"
                            SELECT Guid, RootBlockHash, TotalWork
                            FROM BlockchainMetadata
                            WHERE IsComplete = 1";

                            using (var reader = cmd.ExecuteReader())
                            {
                                while (reader.Read())
                                {
                                    var guid = new Guid(reader.GetCharBytes(0));
                                    var rootBlockHash = reader.GetUInt256(1);
                                    var totalWork = reader.GetBigInteger(2);

                                    results.Add(Tuple.Create(new BlockchainKey(guid, rootBlockHash), new BlockchainMetadata(guid, rootBlockHash, totalWork)));
                                }
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    Debug.WriteLine("Error reading blockchain database: {0}: {1}".Format2(Path.GetFileName(file), e.Message));
                }

                foreach (var result in results)
                    yield return result;
            }
        }
        public IEnumerable<ColumInfo> GetColums(FbConnection con)
        {
            var constraints = GetConstrains(con);

            using (var command = con.CreateCommand())
            {
                command.CommandText =
                    $"select trim(rf.rdb$field_name) Name, f.rdb$field_type Type, f.rdb$field_sub_type SubType , f.rdb$character_length CharSize, trim(rf.rdb$field_source) FieldSource, rf.rdb$null_flag NullFlag, f.rdb$null_flag fieldNullFlag, f.rdb$field_precision FieldPrecision, f.rdb$field_scale FieldScale, f.rdb$field_length FieldLength, coalesce(rf.rdb$default_source, '') DefaultSource " +
                        "from rdb$relation_fields rf " +
                        "join rdb$relations r on rf.rdb$relation_name = r.rdb$relation_name " +
                                            "and r.rdb$view_blr is null " +
                                            $"and r.rdb$relation_type = 0 and r.rdb$system_flag = {SystemFlag} " +
                        "join rdb$fields f on f.rdb$field_name = rf.rdb$field_source " +
                    $"where rf.rdb$relation_name = '{this.TableName}' " +
                     "order by rf.rdb$field_position; ";
                var reader = command.ExecuteReader();
                while (reader.Read())
                {
                    var name = (string)reader["Name"];
                    var size = (reader["CharSize"] == DBNull.Value) ? null : (short?)reader["CharSize"];
                    var subType = (reader["SubType"] == DBNull.Value) ? null : (short?)reader["SubType"];
                    var nullFlag = reader["NullFlag"] == DBNull.Value;
                    var fieldNullFlag = reader["FieldNullFlag"] == DBNull.Value;
                    var precision = (reader["FieldPrecision"] == DBNull.Value) ? null : (short?)reader["FieldPrecision"];
                    var scale = (reader["FieldScale"] == DBNull.Value) ? null : (short?)reader["FieldScale"];
                    var fieldLength = (reader["FieldLength"] == DBNull.Value) ? null : (short?)reader["FieldLength"];
                    var type = new FieldType((short)reader["Type"], subType, size, precision, scale, fieldLength);
                    var defaultSource = (string)reader["DefaultSource"];

                    var constraintInfo = new ColumConstraintsInfo();
                    if (constraints.ContainsKey(name))
                    {
                        constraintInfo = constraints[name];
                    }

                    yield return new ColumInfo(name, type, constraintInfo, (string)reader["FieldSource"], nullFlag, fieldNullFlag, defaultSource);
                }
            }
        }
 protected static bool IsInDatabase(Action<FbCommand> adjustCommand)
 {
     var result = false;
     using (var connection = new FbConnection(IntegrationTestOptions.Firebird.ConnectionString))
     {
         connection.Open();
         using (var tx = connection.BeginTransaction())
         {
             using (var cmd = connection.CreateCommand())
             {
                 cmd.Transaction = tx;
                 adjustCommand(cmd);
                 using (var reader = cmd.ExecuteReader())
                 {
                     result = reader.Read();
                 }
             }
             tx.Commit();
         }
         connection.Close();
     }
     return result;
 }
        private bool ForeignKeyExists(string connectionString, string withName)
        {
            using (var connection = new FbConnection(connectionString))
            {
                connection.Open();
                var keyQuery = String.Format(@"
SELECT rc.RDB$CONSTRAINT_NAME AS constraint_name,
i.RDB$RELATION_NAME AS table_name,
s.RDB$FIELD_NAME AS field_name,
i.RDB$DESCRIPTION AS description,
rc.RDB$DEFERRABLE AS is_deferrable,
rc.RDB$INITIALLY_DEFERRED AS is_deferred,
refc.RDB$UPDATE_RULE AS on_update,
refc.RDB$DELETE_RULE AS on_delete,
refc.RDB$MATCH_OPTION AS match_type,
i2.RDB$RELATION_NAME AS references_table,
s2.RDB$FIELD_NAME AS references_field,
(s.RDB$FIELD_POSITION + 1) AS field_position
FROM RDB$INDEX_SEGMENTS s
LEFT JOIN RDB$INDICES i ON i.RDB$INDEX_NAME = s.RDB$INDEX_NAME
LEFT JOIN RDB$RELATION_CONSTRAINTS rc ON rc.RDB$INDEX_NAME = s.RDB$INDEX_NAME
LEFT JOIN RDB$REF_CONSTRAINTS refc ON rc.RDB$CONSTRAINT_NAME = refc.RDB$CONSTRAINT_NAME
LEFT JOIN RDB$RELATION_CONSTRAINTS rc2 ON rc2.RDB$CONSTRAINT_NAME = refc.RDB$CONST_NAME_UQ
LEFT JOIN RDB$INDICES i2 ON i2.RDB$INDEX_NAME = rc2.RDB$INDEX_NAME
LEFT JOIN RDB$INDEX_SEGMENTS s2 ON i2.RDB$INDEX_NAME = s2.RDB$INDEX_NAME
WHERE rc.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY'
ORDER BY s.RDB$FIELD_POSITION", MigrationWhichCreatesTwoRelatedTables.ForeignKeyName);
                var cmd = connection.CreateCommand();
                cmd.CommandText = keyQuery;
                var result = false;
                using (var rdr = cmd.ExecuteReader())
                {
                    while (rdr.Read())
                    {
                        try
                        {
                            var constraintName = rdr["CONSTRAINT_NAME"];
                            if (constraintName == null) continue;
                            if (constraintName is DBNull) continue;
                            if (constraintName.ToString().Trim() == withName)
                            {
                                result = true;
                                break;
                            }
                        }
                        catch { }
                    }
                }
                connection.Close();
                FbConnection.ClearPool(connection);
                return result;
            }
        }
示例#17
0
		public override void CreateUninitializedItem(HttpContext context, string id, int timeout)
		{
			using (FbConnection conn = new FbConnection(this.connectionString))
			{
				conn.Open();

				using (FbCommand cmd = conn.CreateCommand())
				{
					cmd.CommandText = "INSERT INTO SESSIONS(SESSIONID, APPLICATIONNAME, CREATED, EXPIRES, " +
						"LOCKDATE, LOCKID, TIMEOUT, LOCKED, SESSIONITEMS, FLAGS) " +
						"VALUES (@SESSIONID, @APPLICATIONNAME, @CREATED, @EXPIRES, @LOCKDATE, @LOCKID, " +
						"@TIMEOUT, @LOCKED, @SESSIONITEMS, @FLAGS)";
					cmd.Parameters.Add("@SESSIONID", FbDbType.VarChar, 80).Value = id;
					cmd.Parameters.Add("@APPLICATIONNAME", FbDbType.VarChar, 100).Value = ApplicationName;
					cmd.Parameters.Add("@CREATED", FbDbType.TimeStamp).Value = DateTime.Now;
					cmd.Parameters.Add("@EXPIRES", FbDbType.TimeStamp).Value = DateTime.Now.AddMinutes((Double)timeout);
					cmd.Parameters.Add("@LOCKDATE", FbDbType.TimeStamp).Value = DateTime.Now;
					cmd.Parameters.Add("@LOCKID", FbDbType.Integer).Value = 0;
					cmd.Parameters.Add("@TIMEOUT", FbDbType.Integer).Value = timeout;
					cmd.Parameters.Add("@LOCKED", FbDbType.SmallInt).Value = false;
					cmd.Parameters.Add("@SESSIONITEMS", FbDbType.Text, 0).Value = "";
					cmd.Parameters.Add("@FLAGS", FbDbType.Integer).Value = 1;

					cmd.ExecuteNonQuery();
				}
			}
		}
 public IEnumerable<ViewInfo> GetViews(FbConnection con)
 {
     using (var command = con.CreateCommand())
     {
         command.CommandText = @"select trim(rdb$relation_name) AS Name, rdb$view_source Source from rdb$relations where rdb$relation_type = 1 and rdb$system_flag = 0 order by rdb$relation_name asc";
         var reader = command.ExecuteReader();
         while (reader.Read())
         {
             yield return new ViewInfo((string)reader["Name"], ((string)reader["Source"]).Trim(' ', '\r', '\n'));
         }
     }
 }
 public IEnumerable<TableInfo> GetTables(FbConnection con)
 {
     using (var command = con.CreateCommand())
     {
         command.CommandText = @"select trim(rdb$relation_name) AS Name from rdb$relations where rdb$relation_type = 0 and rdb$system_flag = 0 order by rdb$relation_name asc";
         var reader = command.ExecuteReader();
         while (reader.Read())
         {
             yield return new TableInfo((string)reader["Name"]);
         }
     }
 }
 public IEnumerable<SequenceInfo> GetSequences(FbConnection con)
 {
     using (var command = con.CreateCommand())
     {
         command.CommandText =
              "execute block " +
              "returns(GeneratorName char(31), CurrentValue bigint) " +
              "as " +
              "begin " +
              "for select rdb$generator_name from rdb$generators where rdb$system_flag = 0 into GeneratorName do " +
              "begin " +
                "execute statement 'select gen_id(' || GeneratorName || ', 0) from rdb$database' into CurrentValue; " +
              "suspend; " +
              "end " +
              "end; ";
         var reader = command.ExecuteReader();
         while (reader.Read())
         {
             var name = (string)reader["GeneratorName"];
             var value = (long)reader["CurrentValue"];
             yield return new SequenceInfo(name, value);
         }
     }
 }
		public int GetActiveConnections()
		{
			var csb = BuildConnectionStringBuilder(_fbServerType);
			csb.Pooling = false;
			using (var conn = new FbConnection(csb.ToString()))
			{
				conn.Open();
				using (var cmd = conn.CreateCommand())
				{
					cmd.CommandText = "select count(*) from mon$attachments where mon$attachment_id <> current_connection";
					return (int)cmd.ExecuteScalar();
				}
			}
		}
示例#22
0
		private static string HelpDbscColumnDefault(FbConnection con, string cname, string tname)
		{
			using (var cmd = con.CreateCommand())
			using (var result = new DataTable())
			{
				result.Locale = CultureInfo.InvariantCulture;

				cmd.CommandText =
					$@"
					SELECT
						rfr.rdb$default_source AS DEFAULT_SOURCE 
					FROM
						rdb$relation_fields rfr  
					WHERE
						rfr.rdb$relation_name = '{tname}' AND rfr.rdb$field_name='{cname}';";

				using (var adapter = new FbDataAdapter(cmd))
					adapter.Fill(result);

				if (result.Rows.Count > 1)
					throw new DBSchemaException("Ambiguous column");

				return result.Rows[0]["DEFAULT_SOURCE"].ToString();
			}
		}
示例#23
0
		private static List<DBGenerator> GetGenerators(FbConnection con)
		{
			using (var cmd = con.CreateCommand())
			{
				var generators = new List<DBGenerator>();

				string[] restrict4 = {null, null, null, null};

				restrict4[0] = null;
				restrict4[1] = null;
				restrict4[2] = null;
				restrict4[3] = null;

				var dtGenerators = con.GetSchema("Generators", restrict4);
				for (var i = 0; i < dtGenerators.Rows.Count; i++)
				{
					var trRow = dtGenerators.Rows[i];
					if (Convert.ToBoolean(trRow["IS_SYSTEM_GENERATOR"], CultureInfo.InvariantCulture))
						continue;

					var eGenerator = new DBGenerator
										{
											Name = trRow["GENERATOR_NAME"].ToString()
										};
					cmd.CommandText = $"SELECT gen_id(\"{eGenerator.Name}\", 0) FROM rdb$database";
					eGenerator.StartValue = Convert.ToInt32(cmd.ExecuteScalar(), CultureInfo.InvariantCulture);

					generators.Add(eGenerator);
				}

				return generators;
			}
		}
示例#24
0
		public override void ResetItemTimeout(HttpContext context, string id)
		{
			using (FbConnection conn = new FbConnection(this.connectionString))
			{
				conn.Open();

				using (FbCommand cmd = conn.CreateCommand())
				{
					cmd.CommandText = "UPDATE SESSIONS SET EXPIRES = @EXPIRES WHERE SESSIONID = @SESSIONID AND " + 
						"APPLICATIONNAME = @APPLICATIONNAME";
					cmd.Parameters.Add("@EXPIRES", FbDbType.TimeStamp).Value = DateTime.Now.AddMinutes(this.config.Timeout.Minutes);
					cmd.Parameters.Add("@SESSIONID", FbDbType.VarChar, 80).Value = id;
					cmd.Parameters.Add("@APPLICATIONNAME", FbDbType.VarChar, 100).Value = ApplicationName;

					cmd.ExecuteNonQuery();
				}
			}
		}
 private Dictionary<string, ColumConstraintsInfo> GetConstrains(FbConnection con)
 {
     var dic = new Dictionary<string, ColumConstraintsInfo>();
     using (var command = con.CreateCommand())
     {
         command.CommandText =
             "select trim(seg.rdb$field_name) FieldName, rel.rdb$constraint_type Type, trim(idx.foreign_key_table) ForeignKeyTable " +
             "from rdb$relation_constraints rel " +
             "left outer join( " +
             "select idx.rdb$index_name, idx.rdb$relation_name, idx2.rdb$relation_name foreign_key_table " +
             "from rdb$indices idx " +
             "left outer join rdb$indices idx2 on idx.rdb$foreign_key = idx2.rdb$index_name) idx " +
             "on  rel.rdb$index_name = idx.rdb$index_name " +
             "left outer join rdb$index_segments seg on idx.rdb$index_name  = seg.rdb$index_name " +
            $"where rel.rdb$relation_name = '{this.TableName}' and seg.rdb$field_name != '' ";
         var reader = command.ExecuteReader();
         while (reader.Read())
         {
             var name = (string)reader["FieldName"];
             ColumConstraintsInfo inf;
             if (!dic.TryGetValue(name, out inf))
             {
                 inf = new ColumConstraintsInfo();
                 dic.Add(name, inf);
             }
             var type = GetConstraintType((string)reader["Type"]);
             inf.SetKind(type);
             if (type == ConstraintsKind.Foreign)
             {
                 inf.ForeignKeyTableName = (string)reader["ForeignKeyTable"];
             }
         }
     }
     return dic;
 }
 public IEnumerable<TriggerInfo> GetTrigger(FbConnection con)
 {
     using (var command = con.CreateCommand())
     {
         command.CommandText = $"select rdb$trigger_name Name, rdb$relation_name TableName, rdb$trigger_source Source from rdb$triggers where rdb$relation_name = '{this.TableName}' and rdb$system_flag = 0";
         var reader = command.ExecuteReader();
         while (reader.Read())
         {
             yield return new TriggerInfo((string)reader["Name"], (string)reader["TableName"], (string)reader["Source"]);
         }
     }
 }
示例#27
0
		private SessionStateStoreData GetSessionStoreItem(bool lockRecord, HttpContext context, string id,
			out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actionFlags)
		{
			locked = false;
			lockAge = TimeSpan.Zero;
			lockId = null;
			actionFlags = 0;

			SessionStateStoreData item = null;

			using (FbConnection conn = new FbConnection(this.connectionString))
			{
				DateTime expires;
				string serializedItems = "";
				bool foundRecord = false;
				bool deleteData = false;
				int timeout = 0;

				conn.Open();

				if (lockRecord)
				{
					using (FbCommand cmd = conn.CreateCommand())
					{
						cmd.CommandText = "UPDATE SESSIONS SET LOCKED = @LOCKED, LOCKDATE = @LOCKDATE " +
							"WHERE SESSIONID = @SESSIONID AND APPLICATIONNAME = @APPLICATIONNAME AND " +
							"LOCKED = @LOCKED2 AND EXPIRES > @EXPIRES";
						cmd.Parameters.Add("@LOCKED", FbDbType.SmallInt).Value = true;
						cmd.Parameters.Add("@LOCKDATE", FbDbType.TimeStamp).Value = DateTime.Now;
						cmd.Parameters.Add("@SESSIONID", FbDbType.VarChar, 80).Value = id;
						cmd.Parameters.Add("@APPLICATIONNAME", FbDbType.VarChar, 100).Value = ApplicationName;
						cmd.Parameters.Add("@LOCKED2", FbDbType.Integer).Value = false;
						cmd.Parameters.Add("@EXPIRES", FbDbType.TimeStamp).Value = DateTime.Now;

						if (cmd.ExecuteNonQuery() == 0)
						{
							locked = true;
						}
						else
						{
							locked = false;
						}
					}
				}

				using (FbCommand cmd = conn.CreateCommand())
				{
					cmd.CommandText = "SELECT EXPIRES, SESSIONITEMS, LOCKID, LOCKDATE, FLAGS, TIMEOUT " +
						"FROM SESSIONS WHERE SESSIONID = @SESSIONID AND APPLICATIONNAME = @APPLICATIONNAME";
					cmd.Parameters.Add("@SESSIONID", FbDbType.VarChar, 80).Value = id;
					cmd.Parameters.Add("@APPLICATIONNAME", FbDbType.VarChar, 100).Value = ApplicationName;

					using (FbDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
					{
						while (reader.Read())
						{
							expires = reader.GetDateTime(0);

							if (expires < DateTime.Now)
							{
								locked = false;
								deleteData = true;
							}
							else
							{
								foundRecord = true;
							}

							serializedItems = reader.GetString(1);
							lockId = reader.GetInt32(2);
							lockAge = DateTime.Now.Subtract(reader.GetDateTime(3));
							actionFlags = (SessionStateActions)reader.GetInt32(4);
							timeout = reader.GetInt32(5);
						}

						if (!foundRecord)
						{
							locked = false;
						}
					}
				}

				if (deleteData)
				{
					using (FbCommand cmd = conn.CreateCommand())
					{
						cmd.CommandText = "DELETE FROM SESSIONS WHERE SESSIONID = @SESSIONID AND APPLICATIONNAME = @APPLICATIONNAME";
						cmd.Parameters.Add("@SESSIONID", FbDbType.VarChar, 80).Value = id;
						cmd.Parameters.Add("@APPLICATIONNAME", FbDbType.VarChar, 100).Value = ApplicationName;
						cmd.ExecuteNonQuery();
					}
				}

				if (foundRecord && !locked)
				{
					lockId = (int)lockId + 1;

					using (FbCommand cmd = conn.CreateCommand())
					{

						cmd.CommandText = "UPDATE SESSIONS SET LOCKID = @LOCKID, FLAGS = 0 " +
							"WHERE SESSIONID = @SESSIONID AND APPLICATIONNAME = @APPLICATIONNAME";
						cmd.Parameters.Add("@LOCKID", FbDbType.Integer).Value = lockId;
						cmd.Parameters.Add("@SESSIONID", FbDbType.VarChar, 80).Value = id;
						cmd.Parameters.Add("@APPLICATIONNAME", FbDbType.VarChar, 100).Value = ApplicationName;

						cmd.ExecuteNonQuery();
					}

					if (actionFlags == SessionStateActions.InitializeItem)
					{
						item = CreateNewStoreData(context, this.config.Timeout.Minutes);
					}
					else
					{
						item = Deserialize(context, serializedItems, timeout);
					}
				}
			}

			return item;
		}
示例#28
0
 private int ActiveConnections()
 {
     using (FbConnection conn = new FbConnection(this.BuildConnectionString()))
     {
         conn.Open();
         using (FbCommand cmd = conn.CreateCommand())
         {
             cmd.CommandText = "select count(*) from mon$attachments where mon$attachment_id <> current_connection";
             return (int)cmd.ExecuteScalar();
         }
     }
 }
 public IEnumerable<ProcedureInfo> GetProcedures(FbConnection con)
 {
     using (var command = con.CreateCommand())
     {
         command.CommandText =
              $"select rdb$procedure_name Name, rdb$procedure_source Source " +
               "from rdb$procedures " +
               "where rdb$procedure_source is not null ";
         var reader = command.ExecuteReader();
         while (reader.Read())
         {
             var name = (string)reader["Name"];
             var source = (string)reader["Source"];
             yield return new ProcedureInfo(name, source);
         }
     }
 }
示例#30
0
 private int LogRowsCount(FbConnection conn)
 {
     using (FbCommand cmd = conn.CreateCommand())
     {
         cmd.CommandText = "select count(*) from log where text = 'on connect'";
         return (int)cmd.ExecuteScalar();
     }
 }
示例#31
0
		public async Task BulkAddSystem(List<EddbSystem> systems)
        {
            if (systems == null)
            {
                Logger.Debug("Null system list passed to InjectSystemsToSql!");
                return;
            }
            Logger.Info("Injecting " + systems.Count + " systems to SQL.");
            Status = "Bulk inserting...";
            FbConnection con2 = new FbConnection(
            _fbConStr);
            try
            {
                con2.Open();
            }
            catch (Exception ex)
            {
                Show(ex.ToString());
            }
            try
            {

                using (FbCommand insertSystem = con2.CreateCommand())
                {
                    insertSystem.CommandText =
    "INSERT INTO eddb_systems values (@id, @name, @x, @y, @z, @faction, @population, @government, @allegiance, @state, @security, @primary_economy, @power, @power_state, @needs_permit, @updated_at, @simbad_ref, @lowercase_name)";
                    insertSystem.Parameters.Clear();
                    insertSystem.Parameters.Add("@id", FbDbType.Integer);
                    insertSystem.Parameters.Add("@name", FbDbType.VarChar, 150);
                    insertSystem.Parameters.Add("@x", FbDbType.Double);
                    insertSystem.Parameters.Add("@y", FbDbType.Double);
                    insertSystem.Parameters.Add("@z", FbDbType.Double);
                    insertSystem.Parameters.Add("@faction", FbDbType.VarChar, 150);
                    insertSystem.Parameters.Add("@population", FbDbType.BigInt);
                    insertSystem.Parameters.Add("@government", FbDbType.VarChar, 130);
                    insertSystem.Parameters.Add("@allegiance", FbDbType.VarChar, 130);
                    insertSystem.Parameters.Add("@state", FbDbType.VarChar, 130);
                    insertSystem.Parameters.Add("@security", FbDbType.VarChar, 150);
                    insertSystem.Parameters.Add("@primary_economy", FbDbType.VarChar, 130);
                    insertSystem.Parameters.Add("@power", FbDbType.VarChar, 130);
                    insertSystem.Parameters.Add("@power_state", FbDbType.VarChar, 130);
                    insertSystem.Parameters.Add("@needs_permit", FbDbType.Integer);
                    insertSystem.Parameters.Add("@updated_at", FbDbType.BigInt);
                    insertSystem.Parameters.Add("@simbad_ref", FbDbType.VarChar, 150);
                    insertSystem.Parameters.Add("@lowercase_name", FbDbType.VarChar, 150);
                    FbTransaction tx = insertSystem.Connection.BeginTransaction();
                    insertSystem.Transaction = tx;
                    insertSystem.Prepare();
                    int i = 0;
                    foreach (EddbSystem system in systems)
                    {
                        if (_eddbworker != null)
                            _eddbworker.SystemCounter++;
                        insertSystem.Parameters["@id"].Value = system.id;
                        insertSystem.Parameters["@name"].Value = system.name;
                        insertSystem.Parameters["@x"].Value = system.x;
                        insertSystem.Parameters["@y"].Value = system.y;
                        insertSystem.Parameters["@z"].Value = system.z;
                        insertSystem.Parameters["@faction"].Value = system.faction;
                        insertSystem.Parameters["@population"].Value = system.population;
                        insertSystem.Parameters["@government"].Value = system.government;
                        insertSystem.Parameters["@allegiance"].Value = system.allegiance;
                        insertSystem.Parameters["@state"].Value = system.state;
                        insertSystem.Parameters["@security"].Value = system.security;
                        insertSystem.Parameters["@primary_economy"].Value = system.primary_economy;
                        insertSystem.Parameters["@power"].Value = system.power;
                        insertSystem.Parameters["@power_state"].Value = system.power_state;
                        insertSystem.Parameters["@needs_permit"].Value = system.needs_permit;
                        insertSystem.Parameters["@updated_at"].Value = system.updated_at;
                        insertSystem.Parameters["@simbad_ref"].Value = system.simbad_ref;
                        insertSystem.Parameters["@lowercase_name"].Value = system.name.ToLower();
                        await insertSystem.ExecuteNonQueryAsync();
                        i++;
                        if (i % 10000 == 0)
                        {
                            tx.Commit();
                            tx = insertSystem.Connection.BeginTransaction();
                            insertSystem.Transaction = tx;
                        }
                    }
                    Status = "Committing transaction...";
                    tx.Commit();
                    con2.Close();
                }
                Logger.Info("Completed injection.");
                Status = "Ready!";
            }
            catch (Exception ex)
            {
                Logger.Debug("Exception in InjectSystemsToSql: " + ex.Message + "@" + ex.Source);
            }
        }