Ejemplo n.º 1
0
        public string BuildConnectionString(string dbType, string dsnName, string auth_type, string server, string port, string database, string loginName, string loginpassword, string userDefinedDriverName, UseDriver useDriverType)
        {
            string ret = string.Empty;

            this.Server = server;

            if (dsnName != string.Empty)
            {
                // I wish to connect through named DSN, ODBC only
                useDriverType = UseDriver.ODBC;
            }

            if (useDriverType == UseDriver.DEFAULT || useDriverType == UseDriver.ORACLE)
            {
                // built in native support for oracle and teradata
                if (dbType == "oracle")
                {
                    if (string.IsNullOrEmpty(port))
                    {
                        port = "1521";
                    }
                    this.MyDriver      = DBExecutor.UseDriver.ORACLE;
                    this.ConnectString = String.Format("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={4})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={3})));User Id = {1}; Password = {2}; ",
                                                       server, loginName, loginpassword, database, port);

                    return(this.ConnectString);
                }
            }

            if (useDriverType == UseDriver.DEFAULT || useDriverType == UseDriver.TERADATA)
            {
                // teradata - we have own driver
                if (dbType == "teradata")
                {
                    this.MyDriver = DBExecutor.UseDriver.TERADATA;
                    TdConnectionStringBuilder builder = new TdConnectionStringBuilder();
                    builder.SessionCharacterSet = "UTF8";
                    builder.DataSource          = server;
                    builder.UserId     = loginName;
                    builder.Password   = loginpassword;
                    this.ConnectString = builder.ToString();
                    return(this.ConnectString);
                }
            }

            // the only solution is find an ODBC driver
            if (string.IsNullOrEmpty(dsnName))
            {
                // I wish to go through driver
                string driverName = string.Empty;

                if (userDefinedDriverName == string.Empty)
                {
                    List <string> drivers = ODBCUtils.GetSystemDriverList();
                    switch (dbType)
                    {
                    case "oracle":
                        driverName = drivers.Where(x => x.IndexOf("Oracle") >= 0).FirstOrDefault();
                        break;

                    case "mssql":
                    default:
                        driverName = drivers.Where(x => x.IndexOf("SQL Server") >= 0).FirstOrDefault();
                        break;
                    }
                }
                else
                {
                    driverName = userDefinedDriverName;
                }

                if (string.IsNullOrEmpty(driverName))
                {
                    throw new Exception("No ODBC driver found, please install and try again");
                }
                else
                {
                    ret += "Driver={" + driverName + "};";
                }

                if (string.IsNullOrEmpty(port))
                {
                    ret += "Server=" + server + ";";
                }
                else
                {
                    ret += "Server=" + server + ":" + port + ";";
                }

                if (!string.IsNullOrEmpty(database))
                {
                    ret += "Database=" + database + ";";
                }
            }
            else
            {
                // I wish to go through named DSN
                ret = "DSN=" + dsnName + ";";
            }

            // add properties both for DSN or driver
            switch (auth_type)
            {
            case "win_auth":
                ret += "Authentication=Windows Authentication;";
                break;

            case "sql_auth":
                ret += "UID=" + loginName + ";";
                ret += "PWD=" + loginpassword + ";";
                break;

            case "dsn_auth":
            default: break;
            }

            this.MyDriver      = DBExecutor.UseDriver.ODBC;
            this.ConnectString = ret;
            return(ret);
        }
Ejemplo n.º 2
0
        public string BuildConnectionString(Arguments args, UseDriver useDriverType)
        {
            Logger.Log("Creating connection string for " + args.dbType);
            string ret = string.Empty;

            this.Server = args.server;

            if (args.dsnName != string.Empty)
            {
                // I wish to connect through named DSN, ODBC only
                useDriverType = UseDriver.ODBC;
            }

            if (useDriverType == UseDriver.DEFAULT || useDriverType == UseDriver.ORACLE)
            {
                // built in native support for oracle and teradata
                if (args.dbType == "oracle")
                {
                    if (string.IsNullOrEmpty(args.port))
                    {
                        args.port = "1521";
                    }
                    this.MyDriver      = DBExecutor.UseDriver.ORACLE;
                    this.ConnectString = String.Format("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={4})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={3})));User Id = {1}; Password = {2}; ",
                                                       args.server, args.loginName, args.loginpassword, args.database, args.port);

                    return(this.ConnectString);
                }
            }

            if (useDriverType == UseDriver.DEFAULT || useDriverType == UseDriver.TERADATA)
            {
                // teradata - we have own driver
                if (args.dbType == "teradata")
                {
                    this.MyDriver = DBExecutor.UseDriver.TERADATA;
                    TdConnectionStringBuilder builder = new TdConnectionStringBuilder();
                    builder.SessionCharacterSet = "UTF8";
                    builder.DataSource          = args.server;
                    builder.UserId     = args.loginName;
                    builder.Password   = args.loginpassword;
                    this.ConnectString = builder.ToString();
                    return(this.ConnectString);
                }
            }

            if (useDriverType == UseDriver.DEFAULT || useDriverType == UseDriver.POSTGRESQL)
            {
                // greenplum, redhift - we have own driver
                if (args.dbType == "greenplum" || args.dbType == "redshift" || args.dbType == "postgres")
                {
                    this.MyDriver = DBExecutor.UseDriver.POSTGRESQL;
                    NpgsqlConnectionStringBuilder builder = new NpgsqlConnectionStringBuilder();
                    builder.Host     = args.server;
                    builder.Encoding = "UTF8";

                    if (!string.IsNullOrEmpty(args.database))
                    {
                        builder.Database = args.database;
                    }

                    if (!string.IsNullOrEmpty(args.port))
                    {
                        if (int.TryParse(args.port, out int portNum) == false)
                        {
                            throw new ArgumentException("Could not parse port number");
                        }
                        else
                        {
                            builder.Port = portNum;
                        }
                    }

                    switch (args.auth_type)
                    {
                    case "win_auth":
                        builder.IntegratedSecurity = true;
                        builder.Username           = args.loginName;
                        Logger.Log("Using Integrated Security: username may be required.");
                        Logger.Log("Connection string: " + builder.ToString());
                        break;

                    case "sql_auth":
                        // logging
                        builder.Username = "******";
                        builder.Password = "******";
                        Logger.Log("Using passw");
                        Logger.Log("Connection string: " + builder.ToString());
                        builder.Password = args.loginpassword;
                        builder.Username = args.loginName;
                        break;

                    case "dsn_auth":
                    default: break;
                    }

                    this.ConnectString = builder.ToString();
                    return(this.ConnectString);
                }
            }

            if (useDriverType == UseDriver.DEFAULT || useDriverType == UseDriver.SNOWFLAKE)
            {
                // snowflake - we have own driver
                if (args.dbType == "snowflake")
                {
                    this.MyDriver = DBExecutor.UseDriver.SNOWFLAKE;
                    if (String.IsNullOrEmpty(args.loginName) || String.IsNullOrEmpty(args.loginpassword) ||
                        String.IsNullOrEmpty(args.account))
                    {
                        throw new ArgumentException("Login, password and client has to be filled in!");
                    }
                    ConnectString  = String.Format("account={0};user={1};password={2}", args.account, args.loginName, args.loginpassword);
                    ConnectString += !String.IsNullOrEmpty(args.database) ? String.Format(";db={0}", args.database) : "";
                    ConnectString += !String.IsNullOrEmpty(args.server) ? String.Format(";host={0}", args.server) : "";
                    ConnectString += !String.IsNullOrEmpty(args.role) ? String.Format(";role={0}", args.role) : "";
                    ConnectString += !String.IsNullOrEmpty(args.warehouse) ? String.Format(";warehouse={0}", args.warehouse) : "";

                    Regex rgx = new Regex("password=[^;]*");
                    Logger.Log(String.Format("Connection string: {0}", rgx.Replace(ConnectString, "password=*****")));

                    return(this.ConnectString);
                }
            }

            // the only solution is find an ODBC driver
            if (string.IsNullOrEmpty(args.dsnName))
            {
                // I wish to go through driver
                string driverName = string.Empty;

                if (args.driverName == string.Empty)
                {
                    List <string> drivers = ODBCUtils.GetSystemDriverList();
                    switch (args.dbType)
                    {
                    case "oracle":
                        driverName = drivers.Where(x => x.IndexOf("Oracle") >= 0).FirstOrDefault();
                        break;

                    case "mssql":
                    default:
                        driverName = drivers.Where(x => x.IndexOf("SQL Server") >= 0).FirstOrDefault();
                        break;
                    }
                }
                else
                {
                    driverName = args.driverName;
                }

                if (string.IsNullOrEmpty(driverName))
                {
                    throw new Exception("No ODBC driver found, please install and try again");
                }
                else
                {
                    ret += "Driver={" + driverName + "};";
                }

                if (string.IsNullOrEmpty(args.port))
                {
                    ret += "Server=" + args.server + ";";
                }
                else
                {
                    ret += "Server=" + args.server + "," + args.port + ";";
                }

                if (!string.IsNullOrEmpty(args.database))
                {
                    ret += "Database=" + args.database + ";";
                }
            }
            else
            {
                // I wish to go through named DSN
                ret = "DSN=" + args.dsnName + ";";
            }

            // add properties both for DSN or driver
            switch (args.auth_type)
            {
            case "win_auth":
                ret += "Authentication=Windows Authentication;";
                break;

            case "sql_auth":
                ret += "UID=" + args.loginName + ";";
                ret += "PWD=" + args.loginpassword + ";";
                break;

            case "dsn_auth":
            default: break;
            }

            this.MyDriver      = DBExecutor.UseDriver.ODBC;
            this.ConnectString = ret;
            return(ret);
        }
Ejemplo n.º 3
0
        public string BuildConnectionString(string dbType, string auth_type, string server, string port, string database, string loginName, string loginpassword)
        {
            string ret = string.Empty;
            this.Server = server;

            // native support
            if (dbType == "oracle")
            {
                if (string.IsNullOrEmpty(port))
                {
                    port = "1521";
                }
                this.MyDriver = DBExecutor.UseDriver.OLEDB;
                this.ConnectString = String.Format("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={4})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={3})));User Id = {1}; Password = {2}; ",
                        server, loginName, loginpassword, database, port);

                return this.ConnectString;
            }

            // teradata - we have own driver
            if (dbType == "teradata")
            {
                this.MyDriver = DBExecutor.UseDriver.TERADATA;
                TdConnectionStringBuilder builder = new TdConnectionStringBuilder();
                builder.SessionCharacterSet = "UTF8";
                builder.DataSource = server;
                builder.UserId = loginName;
                builder.Password = loginpassword;
                this.ConnectString = builder.ToString();
                return this.ConnectString;
            }

            // others
            List<string> drivers = ODBCUtils.GetSystemDriverList();
            string driverName = string.Empty;
            switch (dbType)
            {
                case "oracle":
                    {
                        driverName = drivers.Where(x => x.IndexOf("Oracle") >= 0).FirstOrDefault();
                        break;
                    }
                case "mssql":
                default:
                    {
                        driverName = drivers.Where(x => x.IndexOf("SQL Server") >= 0).FirstOrDefault();
                        break;
                    }
            }
            if (string.IsNullOrEmpty(driverName))
            {
                throw new Exception("No ODBC driver found, please install and try again");
            }
            else
            {
                ret += "Driver={" + driverName + "};";
            }
            if (string.IsNullOrEmpty(port))
            {
                ret += "Server=" + server + ";";
            } else {
                ret += "Server=" + server + ":" + port + ";";
            }
            ret += "Database=" + database + ";";

            switch (auth_type)
            {
                case "win_auth":
                {
                    ret += "Authentication=Windows Authentication;";
                    break;
                }
                default:
                case "sql_auth":
                {
                    ret += "UID=" + loginName + ";";
                    ret += "PWD=" + loginpassword + ";";
                    break;
                }
            }
            this.MyDriver = DBExecutor.UseDriver.ODBC;
            this.ConnectString = ret;
            return ret;
        }
Ejemplo n.º 4
0
        public string BuildConnectionString(string dbType, string dsnName, string auth_type, string server, string port, string database, string loginName, string loginpassword, string userDefinedDriverName, UseDriver useDriverType)
        {
            string ret = string.Empty;
            this.Server = server;

            if (dsnName != string.Empty)
            {
                // I wish to connect through named DSN, ODBC only
                useDriverType = UseDriver.ODBC;
            }

            if (useDriverType == UseDriver.DEFAULT || useDriverType == UseDriver.ORACLE)
            {
                // built in native support for oracle and teradata
                if (dbType == "oracle")
                {
                    if (string.IsNullOrEmpty(port))
                    {
                        port = "1521";
                    }
                    this.MyDriver = DBExecutor.UseDriver.ORACLE;
                    this.ConnectString = String.Format("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={4})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={3})));User Id = {1}; Password = {2}; ",
                            server, loginName, loginpassword, database, port);

                    return this.ConnectString;
                }
            }

            if (useDriverType == UseDriver.DEFAULT || useDriverType == UseDriver.TERADATA)
            {
                // teradata - we have own driver
                if (dbType == "teradata")
                {
                    this.MyDriver = DBExecutor.UseDriver.TERADATA;
                    TdConnectionStringBuilder builder = new TdConnectionStringBuilder();
                    builder.SessionCharacterSet = "UTF8";
                    builder.DataSource = server;
                    builder.UserId = loginName;
                    builder.Password = loginpassword;
                    this.ConnectString = builder.ToString();
                    return this.ConnectString;
                }
            }

            // the only solution is find an ODBC driver
            if (string.IsNullOrEmpty(dsnName))
            {
                // I wish to go through driver
                string driverName = string.Empty;

                if (userDefinedDriverName == string.Empty)
                {
                    List<string> drivers = ODBCUtils.GetSystemDriverList();
                    switch (dbType)
                    {
                        case "oracle":
                            driverName = drivers.Where(x => x.IndexOf("Oracle") >= 0).FirstOrDefault();
                            break;
                        case "mssql":
                        default:
                            driverName = drivers.Where(x => x.IndexOf("SQL Server") >= 0).FirstOrDefault();
                            break;
                    }
                }
                else
                {
                    driverName = userDefinedDriverName;
                }

                if (string.IsNullOrEmpty(driverName))
                {
                    throw new Exception("No ODBC driver found, please install and try again");
                }
                else
                {
                    ret += "Driver={" + driverName + "};";
                }

                if (string.IsNullOrEmpty(port))
                {
                    ret += "Server=" + server + ";";
                }
                else
                {
                    ret += "Server=" + server + ":" + port + ";";
                }

                if (!string.IsNullOrEmpty(database))
                {
                    ret += "Database=" + database + ";";
                }
            }
            else
            {
                // I wish to go through named DSN
                ret = "DSN=" + dsnName + ";";
            }

            // add properties both for DSN or driver
            switch (auth_type)
            {
                case "win_auth":
                    ret += "Authentication=Windows Authentication;";
                    break;
                case "sql_auth":
                    ret += "UID=" + loginName + ";";
                    ret += "PWD=" + loginpassword + ";";
                    break;
                case "dsn_auth":
                default: break;
            }

            this.MyDriver = DBExecutor.UseDriver.ODBC;
            this.ConnectString = ret;
            return ret;
        }