ToString() public méthode

public ToString ( ) : string
Résultat string
		private string GetConnectionString(string fileOrServerOrConnectionString)
		{
			if(fileOrServerOrConnectionString.IndexOf('=') >= 0)
			{
				return fileOrServerOrConnectionString;
			}
			DbConnectionStringBuilder builder = new DbConnectionStringBuilder();
			if(fileOrServerOrConnectionString.EndsWith(".mdf", StringComparison.OrdinalIgnoreCase))
			{
				// if just a database file is specified, default to local SqlExpress instance
				builder.Add("AttachDBFileName", fileOrServerOrConnectionString);
				builder.Add("Server", "localhost\\sqlexpress");
				builder.Add("Integrated Security", "SSPI");
				builder.Add("User Instance", "true");
				builder.Add("MultipleActiveResultSets", "true");
			}
			else if(fileOrServerOrConnectionString.EndsWith(".sdf", StringComparison.OrdinalIgnoreCase))
			{
				// A SqlCE database file has been specified
				builder.Add("Data Source", fileOrServerOrConnectionString);
			}
			else
			{
				builder.Add("Server", fileOrServerOrConnectionString);
				builder.Add("Database", _services.Model.DatabaseName);
				builder.Add("Integrated Security", "SSPI");
			}
			return builder.ToString();
		}
Exemple #2
0
        void AutoDetectDatabase()
        {
            var list = new List<String>();

            // 加上本机MSSQL
            String localName = "local_MSSQL";
            String localstr = "Data Source=.;Initial Catalog=master;Integrated Security=True;";
            if (!ContainConnStr(localstr)) DAL.AddConnStr(localName, localstr, null, "mssql");

            var sw = new Stopwatch();
            sw.Start();

            #region 检测本地Access和SQLite
            var n = 0;
            String[] ss = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.*", SearchOption.TopDirectoryOnly);
            foreach (String item in ss)
            {
                String ext = Path.GetExtension(item);
                if (String.Equals(ext, ".exe", StringComparison.OrdinalIgnoreCase)) continue;
                if (String.Equals(ext, ".dll", StringComparison.OrdinalIgnoreCase)) continue;
                if (String.Equals(ext, ".zip", StringComparison.OrdinalIgnoreCase)) continue;
                if (String.Equals(ext, ".rar", StringComparison.OrdinalIgnoreCase)) continue;
                if (String.Equals(ext, ".txt", StringComparison.OrdinalIgnoreCase)) continue;
                if (String.Equals(ext, ".config", StringComparison.OrdinalIgnoreCase)) continue;

                try
                {
                    if (DetectFileDb(item)) n++;
                }
                catch (Exception ex) { XTrace.WriteException(ex); }
            }
            #endregion

            sw.Stop();
            XTrace.WriteLine("自动检测文件{0}个,发现数据库{1}个,耗时:{2}!", ss.Length, n, sw.Elapsed);

            foreach (var item in DAL.ConnStrs)
            {
                if (!String.IsNullOrEmpty(item.Value.ConnectionString)) list.Add(item.Key);
            }

            // 远程数据库耗时太长,这里先列出来
            this.Invoke(new Action<List<String>>(SetDatabaseList), list);
            //!!! 必须另外实例化一个列表,否则作为数据源绑定时,会因为是同一个对象而被跳过
            list = new List<String>(list);

            sw.Reset();
            sw.Start();

            #region 探测连接中的其它库
            var sysdbnames = new String[] { "master", "tempdb", "model", "msdb" };
            n = 0;
            var names = new List<String>();
            foreach (var item in list)
            {
                try
                {
                    var dal = DAL.Create(item);
                    if (dal.DbType != DatabaseType.SqlServer) continue;

                    DataTable dt = null;
                    String dbprovider = null;

                    // 列出所有数据库
                    Boolean old = DAL.ShowSQL;
                    DAL.ShowSQL = false;
                    try
                    {
                        if (dal.Db.CreateMetaData().MetaDataCollections.Contains("Databases"))
                        {
                            dt = dal.Db.CreateSession().GetSchema("Databases", null);
                            dbprovider = dal.DbType.ToString();
                        }
                    }
                    finally { DAL.ShowSQL = old; }

                    if (dt == null) continue;

                    var builder = new DbConnectionStringBuilder();
                    builder.ConnectionString = dal.ConnStr;

                    // 统计库名
                    foreach (DataRow dr in dt.Rows)
                    {
                        String dbname = dr[0].ToString();
                        if (Array.IndexOf(sysdbnames, dbname) >= 0) continue;

                        String connName = String.Format("{0}_{1}", item, dbname);

                        builder["Database"] = dbname;
                        DAL.AddConnStr(connName, builder.ToString(), null, dbprovider);
                        n++;

                        try
                        {
                            String ver = dal.Db.ServerVersion;
                            names.Add(connName);
                        }
                        catch
                        {
                            if (DAL.ConnStrs.ContainsKey(connName)) DAL.ConnStrs.Remove(connName);
                        }
                    }
                }
                catch
                {
                    if (item == localName) DAL.ConnStrs.Remove(localName);
                }
            }
            #endregion

            sw.Stop();
            XTrace.WriteLine("发现远程数据库{0}个,耗时:{1}!", n, sw.Elapsed);

            if (DAL.ConnStrs.ContainsKey(localName)) DAL.ConnStrs.Remove(localName);
            if (list.Contains(localName)) list.Remove(localName);

            if (names != null && names.Count > 0)
            {
                list.AddRange(names);

                this.Invoke(new Action<List<String>>(SetDatabaseList), list);
            }
        }
Exemple #3
0
        private void initialize(string path, bool hasHeaders, bool hasMixedData)
        {
            string fullPath = Path.GetFullPath(path);
            string extension = Path.GetExtension(path);

            if (!File.Exists(fullPath))
                throw new FileNotFoundException("File could not be found.", fullPath);

            string tempFileName = Path.GetTempFileName();
            File.Copy(fullPath, tempFileName, true);

            // Reader Settings
            HasHeaders = hasHeaders;
            HasMixedData = hasMixedData;

            switch (extension)
            {
                case ".xls": Version = "Excel 8.0"; break; // Excel 95-2003
                case ".xlsx": Version = "Excel 12.0"; break; // Excel 2007+
                default: throw new ArgumentException("File type could not be determined by file extension.", "path");
            }

            if (IntPtr.Size == 4 && extension == ".xls")
                Provider = "Microsoft.Jet.OLEDB.4.0";   // for x86/95-2003
            else Provider = "Microsoft.ACE.OLEDB.12.0"; // for x64/95-2007+

            var strBuilder = new DbConnectionStringBuilder();

            strBuilder.Add("Provider", Provider);
            strBuilder.Add("Data Source", tempFileName);
            strBuilder.Add("Extended Properties", Version + ";" +
                "HDR=" + (HasHeaders ? "Yes" : "No") + ';' +
                "Imex=" + (HasMixedData ? "2" : "0") + ';');
            strConnection = strBuilder.ToString();
        }
 private string GetBaseConnectionString()
 {
     DbConnectionStringBuilder builder = new DbConnectionStringBuilder();
     builder[_view.ServiceParameter] = _view.Service;
     builder[_view.UsernameParameter] = _view.Username;
     builder[_view.PasswordParameter] = _view.Password;
     return builder.ToString();
 }
 public static string GetResolvedConnectionString(string connectionString)
 {
     DbConnectionStringBuilder dbConnectionStringBuilders = new DbConnectionStringBuilder();
     dbConnectionStringBuilders["Data Source"] = ConnectionStringHelper.GetDataSourceFilePath(dbConnectionStringBuilders, connectionString);
     return dbConnectionStringBuilders.ToString();
 }
 /// <summary>
 /// Create a database object.
 /// </summary>
 /// <param name="connectionStringBuilder">Database-specific connection string</param>
 /// <returns>Database driver.</returns>
 public IDbDriver CreateDatabaseObject(DbConnectionStringBuilder connectionStringBuilder)
 {
     IDbDriver instance = new CsvFile();
     instance.ConnectionString = connectionStringBuilder.ToString();
     return instance;
 }
 static PostStoreDbContext()
 {
     var connectionStringBuilder = new DbConnectionStringBuilder();
     connectionStringBuilder.ConnectionString = "Data Source=|DataDirectory|PostStore.sqlite";
     ConnectionString = connectionStringBuilder.ToString();
 }
Exemple #8
0
        void AutoDetectDatabase()
        {
            List<String> list = new List<String>();

            // 加上本机MSSQL
            String localName = "local_MSSQL";
            String localstr = "Data Source=.;Initial Catalog=master;Integrated Security=True;";
            if (!ContainConnStr(localstr)) DAL.AddConnStr(localName, localstr, null, "mssql");

            #region 检测本地Access和SQLite
            String[] ss = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.*", SearchOption.TopDirectoryOnly);
            foreach (String item in ss)
            {
                String ext = Path.GetExtension(item);
                if (String.Equals(ext, ".exe", StringComparison.OrdinalIgnoreCase)) continue;
                if (String.Equals(ext, ".dll", StringComparison.OrdinalIgnoreCase)) continue;
                if (String.Equals(ext, ".zip", StringComparison.OrdinalIgnoreCase)) continue;
                if (String.Equals(ext, ".rar", StringComparison.OrdinalIgnoreCase)) continue;
                if (String.Equals(ext, ".xml", StringComparison.OrdinalIgnoreCase)) continue;

                String access = "Standard Jet DB";
                String sqlite = "SQLite";

                try
                {
                    using (FileStream fs = new FileStream(item, FileMode.Open, FileAccess.Read, FileShare.Read))
                    {
                        BinaryReader reader = new BinaryReader(fs);
                        Byte[] bts = reader.ReadBytes(sqlite.Length);
                        if (bts != null && bts.Length > 0)
                        {
                            if (bts[0] == 'S' && bts[1] == 'Q' && Encoding.ASCII.GetString(bts) == sqlite)
                            {
                                localstr = String.Format("Data Source={0};", item);
                                if (!ContainConnStr(localstr)) DAL.AddConnStr("SQLite_" + Path.GetFileNameWithoutExtension(item), localstr, null, "SQLite");
                            }
                            else if (bts[4] == 'S' && bts[5] == 't')
                            {
                                fs.Seek(4, SeekOrigin.Begin);
                                bts = reader.ReadBytes(access.Length);
                                if (Encoding.ASCII.GetString(bts) == access)
                                {
                                    localstr = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0};Persist Security Info=False;OLE DB Services=-1", item);
                                    if (!ContainConnStr(localstr)) DAL.AddConnStr("Access_" + Path.GetFileNameWithoutExtension(item), localstr, null, "Access");
                                }
                            }
                        }
                    }
                }
                catch { }
            }
            #endregion

            foreach (var item in DAL.ConnStrs)
            {
                if (!String.IsNullOrEmpty(item.Value.ConnectionString)) list.Add(item.Key);
            }

            #region 探测连接中的其它库
            String[] sysdbnames = new String[] { "master", "tempdb", "model", "msdb" };

            List<String> names = new List<String>();
            foreach (String item in list)
            {
                try
                {
                    DAL dal = DAL.Create(item);
                    if (dal.DbType != DatabaseType.SqlServer) continue;

                    DataTable dt = null;
                    String dbprovider = null;

                    // 列出所有数据库
                    Boolean old = DAL.ShowSQL;
                    DAL.ShowSQL = false;
                    try
                    {
                        if (dal.Db.CreateMetaData().MetaDataCollections.Contains("Databases"))
                        {
                            dt = dal.Db.CreateSession().GetSchema("Databases", null);
                            dbprovider = dal.DbType.ToString();
                        }
                    }
                    finally { DAL.ShowSQL = old; }

                    if (dt == null) continue;

                    DbConnectionStringBuilder builder = new DbConnectionStringBuilder();
                    builder.ConnectionString = dal.ConnStr;

                    // 统计库名
                    foreach (DataRow dr in dt.Rows)
                    {
                        String dbname = dr[0].ToString();
                        if (Array.IndexOf(sysdbnames, dbname) >= 0) continue;

                        String connName = String.Format("{0}_{1}", item, dbname);

                        builder["Database"] = dbname;
                        DAL.AddConnStr(connName, builder.ToString(), null, dbprovider);

                        try
                        {
                            String ver = dal.Db.ServerVersion;
                            names.Add(connName);
                        }
                        catch
                        {
                            if (DAL.ConnStrs.ContainsKey(connName)) DAL.ConnStrs.Remove(connName);
                        }
                    }
                }
                catch
                {
                    if (item == localName) DAL.ConnStrs.Remove(localName);
                }
            }
            #endregion

            if (DAL.ConnStrs.ContainsKey(localName)) DAL.ConnStrs.Remove(localName);
            if (list.Contains(localName)) list.Remove(localName);

            if (names != null && names.Count > 0)
            {
                list.AddRange(names);

                this.Invoke(new Action<List<String>>(SetDatabaseList), list);
            }
        }
Exemple #9
0
        private string GetDiscoveryCrmConnectionString()
        {
            DbConnectionStringBuilder dbcb = new DbConnectionStringBuilder();
            dbcb.Add("Url", string.Format("{0}://{1}:{2}",
                UseSsl ? "https" : "http",
                UseIfd ? ServerName : UseOsdp ? "disco." + ServerName : UseOnline ? "dev." + ServerName : ServerName,
                ServerPort == 0 ? (UseSsl ? 443 : 80) : ServerPort));

            if (IsCustomAuth)
            {
                if (!UseIfd)
                {
                    if (!string.IsNullOrEmpty(UserDomain))
                    {
                        dbcb.Add("Domain", UserDomain);
                    }
                }

                string username = UserName;
                if (UseIfd)
                {
                    if (!string.IsNullOrEmpty(UserDomain))
                    {
                        username = string.Format("{0}\\{1}", UserDomain, UserName);
                    }
                }

                if (string.IsNullOrEmpty(userPassword))
                {
                    throw new Exception("User password cannot be null. If the user password is not stored in configuration file, you should request it from the end user");
                }

                var decryptedPassword = CryptoManager.Decrypt(userPassword, ConnectionManager.CryptoPassPhrase,
                    ConnectionManager.CryptoSaltValue,
                    ConnectionManager.CryptoHashAlgorythm,
                    ConnectionManager.CryptoPasswordIterations,
                    ConnectionManager.CryptoInitVector,
                    ConnectionManager.CryptoKeySize);

                dbcb.Add("Username", username);
                dbcb.Add("Password", decryptedPassword);
            }

            if (UseOnline && !UseOsdp)
            {
                ClientCredentials deviceCredentials;

                do
                {
                    deviceCredentials = DeviceIdManager.LoadDeviceCredentials() ??
                                        DeviceIdManager.RegisterDevice();
                } while (deviceCredentials.UserName.Password.Contains(";")
                         || deviceCredentials.UserName.Password.Contains("=")
                         || deviceCredentials.UserName.Password.Contains(" ")
                         || deviceCredentials.UserName.UserName.Contains(";")
                         || deviceCredentials.UserName.UserName.Contains("=")
                         || deviceCredentials.UserName.UserName.Contains(" "));

                dbcb.Add("DeviceID", deviceCredentials.UserName.UserName);
                dbcb.Add("DevicePassword", deviceCredentials.UserName.Password);
            }

            if (UseIfd && !string.IsNullOrEmpty(HomeRealmUrl))
            {
                dbcb.Add("HomeRealmUri", HomeRealmUrl);
            }

            return dbcb.ToString();
        }
 private static string GetConnectionString(string fileOrConnectionString)
 {
     if (fileOrConnectionString.IndexOf('=') > 0)
     {
         return fileOrConnectionString;
     }
     DbConnectionStringBuilder builder = new DbConnectionStringBuilder();
     if (fileOrConnectionString.EndsWith(".mdf", StringComparison.OrdinalIgnoreCase))
     {
         builder.Add("AttachDBFileName", fileOrConnectionString);
         builder.Add("Server", @"localhost\sqlexpress");
         builder.Add("Integrated Security", "SSPI");
         builder.Add("User Instance", "true");
         builder.Add("MultipleActiveResultSets", "true");
     }
     else
     {
         if (!fileOrConnectionString.EndsWith(".sdf", StringComparison.OrdinalIgnoreCase))
         {
             return fileOrConnectionString;
         }
         builder.Add("Data Source", fileOrConnectionString);
     }
     return builder.ToString();
 }
		private void InitializeDataSource()
		{
			var entityRegistry = ConfigManager.GetService<IEntityRegistry>();

			var database = (Database)((EntityRegistry)entityRegistry).Storage;

			if (database == null)
				return;

			var conStr = new DbConnectionStringBuilder
			{
				ConnectionString = database.ConnectionString
			};

			var dbFile = (string)conStr.Cast<KeyValuePair<string, object>>().ToDictionary(StringComparer.InvariantCultureIgnoreCase).TryGetValue("Data Source");

			if (dbFile == null)
				return;

			dbFile = dbFile.Replace("%Documents%", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));

			conStr["Data Source"] = dbFile;
			database.ConnectionString = conStr.ToString();

			dbFile.CreateDirIfNotExists();

			if (!File.Exists(dbFile))
				Properties.Resources.StockSharp.Save(dbFile);
		}
Exemple #12
0
        private IDbDriver GetDbDriver(string pKey)
        {
            IDbDriverFactory dbFactory = null;
            switch (pKey)
            {
                case "Epi.Data.SqlServer.SqlDBFactory, Epi.Data.SqlServer":
                    dbFactory = DbDriverFactoryCreator.GetDbDriverFactory(Configuration.SqlDriver);
                    break;
                case "Epi.Data.MySQL.MySQLDBFactory, Epi.Data.MySQL":
                    dbFactory = DbDriverFactoryCreator.GetDbDriverFactory(Configuration.MySQLDriver);

                    break;
                case "Epi.Data.Office.AccessDBFactory, Epi.Data.Office":
                    dbFactory = DbDriverFactoryCreator.GetDbDriverFactory(Configuration.AccessDriver);
                    break;
                //case "":
                //    dbFactory = DbDriverFactoryCreator.GetDbDriverFactory(Configuration.ExcelDriver);
                //  break;
                default:
                    dbFactory = DbDriverFactoryCreator.GetDbDriverFactory(Configuration.AccessDriver);
                    break;
            }

            DbConnectionStringBuilder dbCnnStringBuilder = new DbConnectionStringBuilder();
            IDbDriver db = dbFactory.CreateDatabaseObject(dbCnnStringBuilder);

            db.ConnectionString = dbCnnStringBuilder.ToString();

            return db;
        }
        private string GetOrganizationCrmConnectionString()
        {
            DbConnectionStringBuilder dbcb = new DbConnectionStringBuilder();
            //dbcb.Add("Url", OrganizationServiceUrl.Replace("/XRMServices/2011/Organization.svc", ""));
            dbcb.Add("Url", !string.IsNullOrEmpty(OriginalUrl) ? OriginalUrl : WebApplicationUrl);

            if (IsCustomAuth)
            {
                if (!UseIfd)
                {
                    if (!string.IsNullOrEmpty(UserDomain))
                    {
                        dbcb.Add("Domain", UserDomain);
                    }
                }

                string username = UserName;
                if (UseIfd)
                {
                    if (!string.IsNullOrEmpty(UserDomain))
                    {
                        username = string.Format("{0}\\{1}", UserDomain, UserName);
                    }
                }

                if (string.IsNullOrEmpty(userPassword))
                {
                    throw new Exception("User password cannot be null. If the user password is not stored in configuration file, you should request it from the end user");
                }

                var decryptedPassword = CryptoManager.Decrypt(userPassword, ConnectionManager.CryptoPassPhrase,
                   ConnectionManager.CryptoSaltValue,
                   ConnectionManager.CryptoHashAlgorythm,
                   ConnectionManager.CryptoPasswordIterations,
                   ConnectionManager.CryptoInitVector,
                   ConnectionManager.CryptoKeySize);

                dbcb.Add("Username", username);
                dbcb.Add("Password", decryptedPassword);
            }

            if (UseIfd && !string.IsNullOrEmpty(HomeRealmUrl))
            {
                dbcb.Add("HomeRealmUri", HomeRealmUrl);
            }

            //append timeout in seconds to connectionstring
            dbcb.Add("Timeout", Timeout.ToString(@"hh\:mm\:ss"));

            //dbcb.Add("AuthType", "OAuth");
            //dbcb.Add("ClientId", "eec38f99-9962-4bb3-99fa-5e04f4bb0ea5");
            //dbcb.Add("LoginPrompt", "Auto");
            //dbcb.Add("RedirectUri", "http://localhost/TOTO");
            //dbcb.Add("TokenCacheStorePath", "c:\\temp");

            //dbcb.Add("AuthType", UseOsdp ? "Office365" : (UseIfd ? "IFD" : "AD"));

            return dbcb.ToString();
        }
 /// <summary>
 /// Create a database object.
 /// </summary>
 /// <param name="connectionStringBuilder">Database-specific connection string</param>
 /// <returns>Database driver.</returns>
 public IDbDriver CreateDatabaseObject(DbConnectionStringBuilder connectionStringBuilder)
 {
     IDbDriver instance = new Excel2007Workbook();
     instance.ConnectionString = connectionStringBuilder.ToString();
     return instance;
 }
Exemple #15
0
		[ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)] // File.Exists method call.
		void IProvider.CreateDatabase()
		{
			this.CheckDispose();
			this.CheckInitialized();
			// Don't need to call CheckNotDeleted() here since we allow CreateDatabase after DeleteDatabase
			// Don't need to call InitializeProviderMode() here since we don't need to know the provider to do this.
			string catalog = null;
			string filename = null;

			DbConnectionStringBuilder builder = new DbConnectionStringBuilder();
			builder.ConnectionString = _conManager.Connection.ConnectionString;

			if(_conManager.Connection.State == ConnectionState.Closed)
			{
				if(_mode == SqlServerProviderMode.SqlCE)
				{
					if(!File.Exists(_dbName))
					{
						Type engineType = _conManager.Connection.GetType().Module.GetType("System.Data.SqlServerCe.SqlCeEngine");
						object engine = Activator.CreateInstance(engineType, new object[] { builder.ToString() });
						try
						{
							engineType.InvokeMember("CreateDatabase", BindingFlags.Instance | BindingFlags.Public | BindingFlags.InvokeMethod, null, engine, new object[] { }, CultureInfo.InvariantCulture);
						}
						catch(TargetInvocationException tie)
						{
							throw tie.InnerException;
						}
						finally
						{
							IDisposable disp = engine as IDisposable;
							if(disp != null)
							{
								disp.Dispose();
							}
						}
					}
					else
					{
						throw Error.CreateDatabaseFailedBecauseSqlCEDatabaseAlreadyExists(_dbName);
					}
				}
				else
				{
					// get connection string w/o reference to new catalog
					object val;
					if(builder.TryGetValue("Initial Catalog", out val))
					{
						catalog = val.ToString();
						builder.Remove("Initial Catalog");
					}
					if(builder.TryGetValue("Database", out val))
					{
						catalog = val.ToString();
						builder.Remove("Database");
					}
					if(builder.TryGetValue("AttachDBFileName", out val))
					{
						filename = val.ToString();
						builder.Remove("AttachDBFileName");
					}
				}
				_conManager.Connection.ConnectionString = builder.ToString();
			}
			else
			{
				if(_mode == SqlServerProviderMode.SqlCE)
				{
					if(File.Exists(_dbName))
					{
						throw Error.CreateDatabaseFailedBecauseSqlCEDatabaseAlreadyExists(_dbName);
					}
				}
				object val;
				if(builder.TryGetValue("Initial Catalog", out val))
				{
					catalog = val.ToString();
				}
				if(builder.TryGetValue("Database", out val))
				{
					catalog = val.ToString();
				}
				if(builder.TryGetValue("AttachDBFileName", out val))
				{
					filename = val.ToString();
				}
			}

			if(String.IsNullOrEmpty(catalog))
			{
				if(!String.IsNullOrEmpty(filename))
				{
					catalog = Path.GetFullPath(filename);
				}
				else if(!String.IsNullOrEmpty(_dbName))
				{
					catalog = _dbName;
				}
				else
				{
					throw Error.CouldNotDetermineCatalogName();
				}
			}

			_conManager.UseConnection(this);
			_conManager.AutoClose = false;

			try
			{
				if(_services.Model.GetTables().FirstOrDefault() == null)
				{
					// we have no tables to create
					throw Error.CreateDatabaseFailedBecauseOfContextWithNoTables(_services.Model.DatabaseName);
				}

				_deleted = false;

				// create database
				if(_mode == SqlServerProviderMode.SqlCE)
				{

					// create tables
					foreach(MetaTable table in _services.Model.GetTables())
					{
						string command = SqlBuilder.GetCreateTableCommand(table);
						if(!String.IsNullOrEmpty(command))
						{
							this.ExecuteCommand(command);
						}
					}
					// create all foreign keys after all tables are defined
					foreach(MetaTable table in _services.Model.GetTables())
					{
						foreach(string command in SqlBuilder.GetCreateForeignKeyCommands(table))
						{
							if(!String.IsNullOrEmpty(command))
							{
								this.ExecuteCommand(command);
							}
						}
					}
				}
				else
				{
					string createdb = SqlBuilder.GetCreateDatabaseCommand(catalog, filename, Path.ChangeExtension(filename, ".ldf"));
					this.ExecuteCommand(createdb);
					_conManager.Connection.ChangeDatabase(catalog);

					// create the schemas that our tables will need
					// cannot be batched together with the rest of the CREATE TABLES
					if(_mode == SqlServerProviderMode.Sql2005 || _mode == SqlServerProviderMode.Sql2008)
					{
						HashSet<string> schemaCommands = new HashSet<string>();

						foreach(MetaTable table in _services.Model.GetTables())
						{
							string schemaCommand = SqlBuilder.GetCreateSchemaForTableCommand(table);
							if(!string.IsNullOrEmpty(schemaCommand))
							{
								schemaCommands.Add(schemaCommand);
							}
						}

						foreach(string schemaCommand in schemaCommands)
						{
							this.ExecuteCommand(schemaCommand);
						}
					}

					StringBuilder sb = new StringBuilder();

					// create tables
					foreach(MetaTable table in _services.Model.GetTables())
					{
						string createTable = SqlBuilder.GetCreateTableCommand(table);
						if(!string.IsNullOrEmpty(createTable))
						{
							sb.AppendLine(createTable);
						}
					}

					// create all foreign keys after all tables are defined
					foreach(MetaTable table in _services.Model.GetTables())
					{
						foreach(string createFK in SqlBuilder.GetCreateForeignKeyCommands(table))
						{
							if(!string.IsNullOrEmpty(createFK))
							{
								sb.AppendLine(createFK);
							}
						}
					}

					if(sb.Length > 0)
					{
						// must be on when creating indexes on computed columns
						sb.Insert(0, "SET ARITHABORT ON" + Environment.NewLine);
						this.ExecuteCommand(sb.ToString());
					}
				}
			}
			finally
			{
				_conManager.ReleaseConnection(this);
				if(_conManager.Connection is SqlConnection)
				{
					SqlConnection.ClearAllPools();
				}
			}
		}
Exemple #16
0
        private string GetOrganizationCrmConnectionString()
        {
            DbConnectionStringBuilder dbcb = new DbConnectionStringBuilder();
            dbcb.Add("Url", OrganizationServiceUrl.Replace("/XRMServices/2011/Organization.svc", ""));

            if (IsCustomAuth)
            {
                if (!UseIfd)
                {
                    if (!string.IsNullOrEmpty(UserDomain))
                    {
                        dbcb.Add("Domain", UserDomain);
                    }
                }

                string username = UserName;
                if (UseIfd)
                {
                    if (!string.IsNullOrEmpty(UserDomain))
                    {
                        username = string.Format("{0}\\{1}", UserDomain, UserName);
                    }
                }

                if (string.IsNullOrEmpty(userPassword))
                {
                    throw new Exception("User password cannot be null. If the user password is not stored in configuration file, you should request it from the end user");
                }

                var decryptedPassword = CryptoManager.Decrypt(userPassword, ConnectionManager.CryptoPassPhrase,
                   ConnectionManager.CryptoSaltValue,
                   ConnectionManager.CryptoHashAlgorythm,
                   ConnectionManager.CryptoPasswordIterations,
                   ConnectionManager.CryptoInitVector,
                   ConnectionManager.CryptoKeySize);

                dbcb.Add("Username", username);
                dbcb.Add("Password", decryptedPassword);
            }

            if (UseOnline)
            {
                ClientCredentials deviceCredentials;

                do
                {
                    deviceCredentials = DeviceIdManager.LoadDeviceCredentials() ??
                                        DeviceIdManager.RegisterDevice();
                } while (deviceCredentials.UserName.Password.Contains(";")
                         || deviceCredentials.UserName.Password.Contains("=")
                         || deviceCredentials.UserName.Password.Contains(" ")
                         || deviceCredentials.UserName.UserName.Contains(";")
                         || deviceCredentials.UserName.UserName.Contains("=")
                         || deviceCredentials.UserName.UserName.Contains(" "));

                dbcb.Add("DeviceID", deviceCredentials.UserName.UserName);
                dbcb.Add("DevicePassword", deviceCredentials.UserName.Password);
            }

            if (UseIfd && !string.IsNullOrEmpty(HomeRealmUrl))
            {
                dbcb.Add("HomeRealmUri", HomeRealmUrl);
            }

            //append timeout in seconds to connectionstring
            dbcb.Add("Timeout", Timeout.ToString(@"hh\:mm\:ss"));

            return dbcb.ToString();
        }
		private void InitializeDataSource()
		{
			_storageRegistry = new StorageRegistry();
			ConfigManager.RegisterService(_storageRegistry);

			_entityRegistry = (HydraEntityRegistry)ConfigManager.GetService<IEntityRegistry>();
			_entityRegistry.TasksSettings.Recycle = false;
			((SecurityList)_entityRegistry.Securities).BulkLoad = true;

			var database = (Database)_entityRegistry.Storage;

			if (database != null)
			{
				var conStr = new DbConnectionStringBuilder
				{
					ConnectionString = database.ConnectionString
				};

				_dbFile = (string)conStr.Cast<KeyValuePair<string, object>>().ToDictionary(StringComparer.InvariantCultureIgnoreCase).TryGetValue("Data Source");

				if (_dbFile != null)
				{
					_dbFile = _dbFile.Replace("%Documents%", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));

					conStr["Data Source"] = _dbFile;
					database.ConnectionString = conStr.ToString();

					_dbFile.CreateDirIfNotExists();

					if (!File.Exists(_dbFile))
					{
						Properties.Resources.StockSharp.Save(_dbFile);
						_entityRegistry.Version = HydraEntityRegistry.LatestVersion;

						UpdateDatabaseWalMode();
					}
				}
			}

			CheckDatabase();

			ConfigManager.RegisterService<IExchangeInfoProvider>(new ExchangeInfoProvider(_entityRegistry));

			var allSec = _entityRegistry.Securities.ReadById(Core.Extensions.AllSecurityId);

			if (allSec != null)
				return;

			_entityRegistry.Securities.Add(new Security
			{
				Id = Core.Extensions.AllSecurityId,
				Code = "ALL",
				//Class = task.GetDisplayName(),
				Name = LocalizedStrings.Str2835,
				Board = ExchangeBoard.Associated,
				ExtensionInfo = new Dictionary<object, object>(),
			});
			_entityRegistry.Securities.DelayAction.WaitFlush();
		}
Exemple #18
0
        //Eric 6.25
        public static DataTable getXLSLeadsRecordsTable(string file, bool hasHeader)
        {
            DbConnectionStringBuilder builder = new DbConnectionStringBuilder();
            // builder.Add("Provider", "Microsoft.Jet.OleDb.4.0");
            builder.Add("Provider", "Microsoft.ACE.OLEDB.12.0");

            builder.Add("Data Source", file);
            if (hasHeader) // if the file contains a header
                // builder.Add("Extended Properties", "Excel 8.0;HDR=Yes");
                builder.Add("Extended Properties", "Excel 12.0;HDR=Yes;IMEX=1;");
            else
                //builder.Add("Extended Properties", "Excel 8.0;HDR=No");
                builder.Add("Extended Properties", "Excel 12.0;HDR=No;IMEX=1;");

            string conStr = builder.ToString();
            OleDbConnection dbConn = new OleDbConnection(conStr);
            DataTable dt = new DataTable();

            try
            {
                dbConn.Open();

                DataTable dtsheet = dbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
                String[] sWorksheet = new String[dtsheet.Rows.Count];
                int i = 0;

                foreach (DataRow row in dtsheet.Rows)
                {
                    sWorksheet[i++] += row["TABLE_NAME"].ToString();
                }

                //char chSplit = '$';

                //sWorksheet = sWorksheet.Split(chSplit).GetValue(0).ToString() + "$";

                OleDbCommand cmd = new OleDbCommand();
                cmd.CommandText = "Select * FROM [" + sWorksheet[0].Replace("''", "'") + "]";
                cmd.Connection = dbConn;
                OleDbDataAdapter objAd = new OleDbDataAdapter();
                objAd.SelectCommand = cmd;
                objAd.Fill(dt);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                dbConn.Close();
            }
            return dt;
        }
        /// <summary>
        /// Converts the supplied connection string so that the Data Source 
        /// specification contains the full path and not ~/ or DataDirectory.
        /// </summary>
        public static string GetResolvedConnectionString(string connectionString)
        {
            Debug.AssertStringNotEmpty(connectionString);

            DbConnectionStringBuilder builder = new DbConnectionStringBuilder();
            builder["Data Source"] = GetDataSourceFilePath(builder, connectionString);
            return builder.ToString();
        }
 private string TestConnection(DbConnectionStringBuilder builder, string owner)
 {
     try
     {
         string connStr = builder.ToString();
         using (SqlConnection conn = new SqlConnection(connStr))
         {
             conn.Open();
             return connStr;
         }
     }
     catch (Exception ex)
     {
         return "ERROR:" + ex.Message;
     }
 }
        /// <summary>
        /// Strips out the database instance name from a connectionString.
        /// </summary>
        /// <param name="connectionString">The connection string.</param>
        /// <param name="dbName">Name of the db.</param>
        /// <returns>The newly created connection string.</returns>
        private static string _StripDbName(string connectionString, string providerName, out string dbName, out string dbFile)
        {
            var builder = new DbConnectionStringBuilder
            {
                ConnectionString = connectionString
            };
            string dbname = null, dbfile = null;
            object tmp;

            // SQLServer.. minimal option..
            if (builder.TryGetValue("Initial Catalog", out tmp))
            {
                dbname = tmp.ToString();
                builder.Remove("Initial Catalog");
            }

            // SQLServer default option..
            if (builder.TryGetValue("Database", out tmp))
            {
                dbname = tmp.ToString();
                builder.Remove("Database");
            }

            // SQLite! (XXX: MsSql has 'Data Source' as a means to specify Server address)
            if ((providerName == SQLiteProvider || providerName == SqlCe) && builder.TryGetValue("Data Source", out tmp))
            {
                dbname = tmp.ToString();
                builder.Remove("Data Source");
            }

            // SQLServer (auto attach alternate)
            if (builder.TryGetValue("AttachDBFileName", out tmp))
            {
                dbfile = tmp.ToString();

                // Replace |DataDirectory| in connection string.
                dbfile = dbfile.Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory") as string);
                builder.Remove("AttachDBFileName");
            }

            // Oracle SID
            if (providerName == OracleDataProvider && builder.TryGetValue("Data Source", out tmp))
            {
                string connStr = tmp.ToString().Replace(" ", "").Replace("\r", "").Replace("\n", "");
                Match match = Regex.Match(connStr, @"SERVICE_NAME=([^\)]+)");

                if (match.Success)
                {
                    dbname = match.Groups[1].Value;
                }

                // Try EZ-Connect method..
                if (string.IsNullOrEmpty(dbname))
                {
                    match = Regex.Match(connStr, ".*/([^$]*)$");

                    if (match.Success)
                    {
                        dbname = match.Groups[1].Value;
                    }
                }
            }

            // If no database is specified at connStr, throw error..
            if (string.IsNullOrEmpty(dbname) && string.IsNullOrEmpty(dbfile))
            {
                throw new ArgumentException("ConnectionString should specify a database name or file");
            }

            // If not catalog nor database name passed, try to obtain it from db file path.
            if (string.IsNullOrEmpty(dbname))
            {
                dbname = dbfile;
            }

            // Save return values..
            dbName = dbname;
            dbFile = dbfile;

            return builder.ToString();
        }
Exemple #22
0
 /// <summary>
 /// Taken from CodeRun.DataModel.Database
 /// </summary>
 /// <param name="fileOrServerOrConnectionString"></param>
 /// <returns></returns>
 private static string FixInitialConnectionString(string fileOrServerOrConnectionString)
 {
     //if (fileOrServerOrConnectionString.Contains(DataDirectoryKeyword) && HostingEnvironment.IsHosted)
     //{
     //  fileOrServerOrConnectionString = fileOrServerOrConnectionString.Replace(DataDirectoryKeyword, HostingEnvironment.MapPath("~/App_Data"));
     //}
     if (fileOrServerOrConnectionString.IndexOf('=') >= 0)
     {
         return fileOrServerOrConnectionString;
     }
     DbConnectionStringBuilder builder = new DbConnectionStringBuilder();
     if (fileOrServerOrConnectionString.EndsWith(".mdf", StringComparison.OrdinalIgnoreCase))
     {
         builder.Add("Initial Catalog", fileOrServerOrConnectionString);//changed
         builder.Add("Server", DefaultDbServer);
         builder.Add("Integrated Security", "SSPI");
         //removed builder.Add("User Instance", "true");
         builder.Add("MultipleActiveResultSets", "true");
     }
     else if (fileOrServerOrConnectionString.EndsWith(".sdf", StringComparison.OrdinalIgnoreCase))
     {
         builder.Add("Data Source", fileOrServerOrConnectionString);
     }
     else
     {
         return fileOrServerOrConnectionString;
         //builder.Add("Server", fileOrServerOrConnectionString);
         //builder.Add("Database", db.Mapping.DatabaseName);
         //builder.Add("Integrated Security", "SSPI");
     }
     return builder.ToString();
 }