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(); }
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); } }
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(); }
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); } }
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); }
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; }
[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(); } } }
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(); }
//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(); }
/// <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(); }