Example #1
0
        public static string ModifyConnString(string connString)
        {
            OleDbConnectionStringBuilder oleConnBuilder = new OleDbConnectionStringBuilder(connString);
            SqlConnectionStringBuilder   sqlConnBuilder = new SqlConnectionStringBuilder();

            object tokenValue;

            if (oleConnBuilder.TryGetValue("Application Name", out tokenValue))
            {
                sqlConnBuilder.ApplicationName = tokenValue.ToString();
            }
            if (oleConnBuilder.TryGetValue("Server", out tokenValue))
            {
                sqlConnBuilder.Add("Server", tokenValue.ToString());
            }
            if (oleConnBuilder.TryGetValue("Database", out tokenValue))
            {
                sqlConnBuilder.Add("Database", tokenValue.ToString());
            }
            if (oleConnBuilder.TryGetValue("Trusted_Connection", out tokenValue))
            {
                sqlConnBuilder.IntegratedSecurity = (string.Compare(tokenValue.ToString(), "yes", true) == 0);
            }
            if (!sqlConnBuilder.IntegratedSecurity)
            {
                sqlConnBuilder.UserID   = oleConnBuilder["User Id"].ToString();
                sqlConnBuilder.Password = oleConnBuilder["Password"].ToString();
            }
            if (oleConnBuilder.TryGetValue("MARS Connection", out tokenValue))
            {
                sqlConnBuilder.MultipleActiveResultSets = (string.Compare(tokenValue.ToString(), "true", true) == 0);
            }

            return(sqlConnBuilder.ToString());
        }
        public CassandraLinqDataContextBase(string nameOrConnectionString)
        {
            object contactPoints = null;
            object port          = null;
            object keyspaceName  = null;

            var match = Regex.Match(
                nameOrConnectionString,
                @"^name([\s]+)?=([\s]+)?(?<name>.*)", RegexOptions.IgnoreCase);

            string connectionString = (match.Success)
                                          ? ConfigurationManager.ConnectionStrings[match.Groups["name"].Value].ConnectionString
                                          : nameOrConnectionString;

            var builder = new OleDbConnectionStringBuilder(connectionString);

            builder.TryGetValue("Contact Points", out contactPoints);

            if (contactPoints == null)
            {
                throw new ArgumentException(
                          "Invalid connection string. [Contact Points] must be specified.",
                          "nameOrConnectionString");
            }

            builder.TryGetValue("Port", out port);

            if (port == null)
            {
                throw new ArgumentException(
                          "Invalid connection string. [Port] must be specified.",
                          "nameOrConnectionString");
            }

            builder.TryGetValue("Keyspace", out keyspaceName);

            if (keyspaceName == null)
            {
                throw new ArgumentException(
                          "Invalid connection string. [Keyspace] must be specified.",
                          "nameOrConnectionString");
            }

            var cluster = Cluster.Builder()
                          .WithConnectionString(String.Format("Contact Points={0};Port={1};", contactPoints, port))
                          .Build();

            _session = cluster.Connect(keyspaceName.ToString());
            _batch   = _session.CreateBatch();
        }
    static private void DisplayValue(OleDbConnectionStringBuilder builder, string key)
    {
        object value = null;

        // Although TryGetValue handles missing keys,
        // it does not handle passing in a null (Nothing in Visual Basic)
        // key. This example traps for that particular error, but
        // throws any other unknown exceptions back out to the
        // caller.
        try
        {
            if (builder.TryGetValue(key, out value))
            {
                Console.WriteLine("{0}='{1}'", key, value);
            }
            else
            {
                Console.WriteLine("Unable to retrieve value for '{0}'", key);
            }
        }
        catch (ArgumentNullException)
        {
            Console.WriteLine("Unable to retrieve value for null key.");
        }
    }
        protected override void SetConnectionString(string value)
        {
            FConnectionString = value;
            OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(value);

            tbDatabase.Text = builder.DataSource;

            object userName;

            builder.TryGetValue(MsAccessDataConnection.strUserID, out userName);
            tbUserName.Text = userName == null ? "" : userName.ToString();

            object password;

            builder.TryGetValue(MsAccessDataConnection.strPassword, out password);
            tbPassword.Text = password == null ? "" : password.ToString();
        }
        internal string GetConnectionStringProperty(string property)
        {
            OleDbConnectionStringBuilder sb = new OleDbConnectionStringBuilder(this.ConnectionString);
            object value = null;

            if (!sb.TryGetValue(property, out value))
            {
                throw new Exception($"The property: '{property}' was not found while searching the connection string in the configuration: '{this.ConfigurationName}'");
            }
            return(value.ToString());
        }
Example #6
0
        public IEnumerable <string> GetTables(string connectionName, string connectionString)
        {
            IList <String> tables = new List <String>();

            String    cmdStr = String.Format("SELECT TABLE FROM DITABLE WHERE UPPER(ClassName) NOT LIKE 'V%' AND UPPER(IndxDbf) LIKE '{0}%' ORDER BY TABLE", connectionName.Equals(Constants.ConnectionNames.Host, StringComparison.InvariantCultureIgnoreCase) ? 'I' : 'P');
            DataTable dt     = Helper.GetOleDbDataTable(HostConnectionString, cmdStr);

            OleDbConnectionStringBuilder bldr = new OleDbConnectionStringBuilder(connectionString);
            Object obj = null;

            bldr.TryGetValue("Data Source", out obj);

            if (obj == null)
            {
                throw new ApplicationException("No Data Source for connection name " + connectionName);
            }

            String directoryName = obj.ToString();

            if (!Directory.Exists(directoryName))
            {
                throw new ApplicationException("Data Source does not exist for connection name " + connectionName);
            }

            // TODO Ensure connectionString has DELETED=False
            foreach (DataRow row in dt.Rows)
            {
                String tableName = row[0].ToString().Trim();

                if ((TableNameFilter != null) && (!TableNameFilter(connectionName, tableName)))
                {
                    continue;
                }

                String fileName = Path.Combine(directoryName, tableName + ".DBF");
                if (File.Exists(fileName))
                {
                    tables.Add(tableName);
                }
            }

            return(tables);
        }
Example #7
0
        private void ParseTSqlStatement(string statement, int connectionID, int reportID)
        {
            SqlStatement toBeParsed     = new SqlStatement();
            String       existingDBName = String.Empty;
            object       existing;
            String       connectionString          = repository.RetrieveConnectionString(connectionID);
            OleDbConnectionStringBuilder csBuilder = (OleDbConnectionStringBuilder)repository.GetConnectionStringBuilder(connectionString);

            if (csBuilder != null)
            {
                if (csBuilder.TryGetValue(Repository.ConnectionStringProperties.InitialCatalog, out existing))
                {
                    existingDBName = (String)existing;
                }
                else if (csBuilder.TryGetValue(Repository.ConnectionStringProperties.Database, out existing))
                {
                    existingDBName = (String)existing;
                }
            }
            else
            {
                csBuilder = (OleDbConnectionStringBuilder)repository.GetConnectionStringBuilder(String.Empty);
            }

            try
            {
                toBeParsed.quotedIdentifiers = true;
                if (toBeParsed.ParseString(statement))
                {
                    foreach (string tableName in toBeParsed.getTableNames(true))
                    {
                        int      tableID    = -1;
                        string[] tableParts = tableName.Split('.');
                        switch (tableParts.Length)
                        {
                        case 3:
                            String dbName = tableParts[0].Replace("[", "").Replace("]", "");
                            if (csBuilder.ContainsKey(Repository.ConnectionStringProperties.InitialCatalog))
                            {
                                csBuilder.Remove(Repository.ConnectionStringProperties.InitialCatalog);
                                csBuilder.Add(Repository.ConnectionStringProperties.InitialCatalog, dbName);
                                connectionString = csBuilder.ConnectionString;
                            }
                            else if (csBuilder.ContainsKey(Repository.ConnectionStringProperties.Database))
                            {
                                csBuilder.Remove(Repository.ConnectionStringProperties.Database);
                                csBuilder.Add(Repository.ConnectionStringProperties.Database, dbName);
                                connectionString = csBuilder.ConnectionString;
                            }
                            int objectConnectionId = repository.GetConnection(connectionString);
                            if (objectConnectionId == -1)
                            {
                                // Need to add a new connectionID.
                                objectConnectionId = repository.AddObject("CMD " + dbName, string.Empty, Repository.OLEDBGuid, repository.RootRepositoryObjectID);
                                repository.AddAttribute(objectConnectionId, Repository.Attributes.ConnectionString, connectionString);
                                repository.AddAttribute(objectConnectionId, Repository.Attributes.ConnectionServer, csBuilder.DataSource);
                                repository.AddAttribute(objectConnectionId, Repository.Attributes.ConnectionDatabase, dbName);
                            }
                            if (threePartNames)
                            {
                                tableID = repository.GetTable(objectConnectionId, String.Format("{0}.{1}.{2}", tableParts[0], tableParts[1], tableParts[2]));
                            }
                            else
                            {
                                tableID = repository.GetTable(objectConnectionId, String.Format("{0}.{1}", tableParts[1], tableParts[2]));
                            }
                            break;

                        default:
                            if (threePartNames)
                            {
                                tableID = repository.GetTable(connectionID, String.Format("[{0}].{1}", existingDBName, tableName));
                            }
                            else
                            {
                                tableID = repository.GetTable(connectionID, tableName);
                            }
                            break;
                        }
                        if (!repository.DoesMappingExist(tableID, reportID))
                        {
                            repository.AddMapping(tableID, reportID);
                        }
                    }
                    foreach (string procedureName in toBeParsed.getProcedureNames(true))
                    {
                        int      procID         = -1;
                        string[] procedureParts = procedureName.Split('.');
                        switch (procedureParts.Length)
                        {
                        case 3:
                            String dbName = procedureParts[0].Replace("[", "").Replace("]", "");
                            if (csBuilder.ContainsKey(Repository.ConnectionStringProperties.InitialCatalog))
                            {
                                csBuilder.Remove(Repository.ConnectionStringProperties.InitialCatalog);
                                csBuilder.Add(Repository.ConnectionStringProperties.InitialCatalog, dbName);
                                connectionString = csBuilder.ConnectionString;
                            }
                            else if (csBuilder.ContainsKey(Repository.ConnectionStringProperties.Database))
                            {
                                csBuilder.Remove(Repository.ConnectionStringProperties.Database);
                                csBuilder.Add(Repository.ConnectionStringProperties.Database, dbName);
                                connectionString = csBuilder.ConnectionString;
                            }
                            int objectConnectionId = repository.GetConnection(connectionString);
                            if (objectConnectionId == -1)
                            {
                                // Need to add a new connectionID.
                                objectConnectionId = repository.AddObject("CMD " + dbName, string.Empty, Repository.OLEDBGuid, repository.RootRepositoryObjectID);
                                repository.AddAttribute(objectConnectionId, Repository.Attributes.ConnectionString, connectionString);
                                repository.AddAttribute(objectConnectionId, Repository.Attributes.ConnectionServer, csBuilder.DataSource);
                                repository.AddAttribute(objectConnectionId, Repository.Attributes.ConnectionDatabase, dbName);
                            }
                            if (threePartNames)
                            {
                                procID = repository.GetProcedure(objectConnectionId, String.Format("{0}.{1}.{2}", procedureParts[0], procedureParts[1], procedureParts[2]));
                            }
                            else
                            {
                                procID = repository.GetProcedure(objectConnectionId, String.Format("{0}.{1}", procedureParts[1], procedureParts[2]));
                            }
                            break;

                        default:
                            if (threePartNames)
                            {
                                procID = repository.GetProcedure(connectionID, String.Format("[{0}].{1}", existingDBName, procedureName));
                            }
                            else
                            {
                                procID = repository.GetProcedure(connectionID, procedureName);
                            }
                            break;
                        }
                        if (!repository.DoesMappingExist(procID, reportID))
                        {
                            repository.AddMapping(procID, reportID);
                        }
                    }
                    foreach (string funcName in toBeParsed.getFunctionNames(true))
                    {
                        int      funcID        = -1;
                        string[] functionParts = funcName.Split('.');
                        switch (functionParts.Length)
                        {
                        case 3:
                            String dbName = functionParts[0].Replace("[", "").Replace("]", "");
                            if (csBuilder.ContainsKey(Repository.ConnectionStringProperties.InitialCatalog))
                            {
                                csBuilder.Remove(Repository.ConnectionStringProperties.InitialCatalog);
                                csBuilder.Add(Repository.ConnectionStringProperties.InitialCatalog, dbName);
                                connectionString = csBuilder.ConnectionString;
                            }
                            else if (csBuilder.ContainsKey(Repository.ConnectionStringProperties.Database))
                            {
                                csBuilder.Remove(Repository.ConnectionStringProperties.Database);
                                csBuilder.Add(Repository.ConnectionStringProperties.Database, dbName);
                                connectionString = csBuilder.ConnectionString;
                            }
                            int objectConnectionId = repository.GetConnection(connectionString);
                            if (objectConnectionId == -1)
                            {
                                // Need to add a new connectionID.
                                objectConnectionId = repository.AddObject("CMD " + dbName, string.Empty, Repository.OLEDBGuid, repository.RootRepositoryObjectID);
                                repository.AddAttribute(objectConnectionId, Repository.Attributes.ConnectionString, connectionString);
                                repository.AddAttribute(objectConnectionId, Repository.Attributes.ConnectionServer, csBuilder.DataSource);
                                repository.AddAttribute(objectConnectionId, Repository.Attributes.ConnectionDatabase, dbName);
                            }
                            if (threePartNames)
                            {
                                funcID = repository.GetFunction(objectConnectionId, String.Format("{0}.{1}.{2}", functionParts[0], functionParts[1], functionParts[2]));
                            }
                            else
                            {
                                funcID = repository.GetFunction(objectConnectionId, String.Format("{0}.{1}", functionParts[1], functionParts[2]));
                            }
                            break;

                        default:
                            if (threePartNames)
                            {
                                funcID = repository.GetFunction(connectionID, String.Format("[{0}].{1}", existingDBName, funcName));
                            }
                            else
                            {
                                funcID = repository.GetFunction(connectionID, funcName);
                            }
                            break;
                        }
                        if (!repository.DoesMappingExist(funcID, reportID))
                        {
                            repository.AddMapping(funcID, reportID);
                        }
                    }
                }
                else
                {
                    string errorMessage = "The following messages where generated whilst parsing the sql statement\r\n" + statement + "\r\n";
                    foreach (string error in toBeParsed.parseErrors)
                    {
                        errorMessage += error + "\r\n";
                    }
                    Console.WriteLine(errorMessage);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(string.Format("SQL Statement Failed with Exception {0}\r\nStatement Was:{1}\r\nPlease report to SSISMeta.codeplex.com\r\n", ex.Message, statement));
            }
        }