using System;
using System.Collections.Generic;
-using System.Configuration;
using System.Data;
using System.Data.Common;
#if !NO_ODBC
private ConnectionManager ()
{
- //Environment.SetEnvironmentVariable(OdbcEnvVar, @"mysql-odbc|Driver={MySQL ODBC 5.3 Unicode Driver};server=127.0.0.1;uid=sa;pwd=qwerty123;");
- //Environment.SetEnvironmentVariable(SqlEnvVar, @"sqlserver-tds|server=127.0.0.1;database=master;user id=sa;password=qwerty123");
+ //Environment.SetEnvironmentVariable(OdbcEnvVar, @"Driver={MySQL ODBC 5.3 Unicode Driver};server=127.0.0.1;uid=sa;pwd=qwerty123;";
+ //Environment.SetEnvironmentVariable(SqlEnvVar, @"server=127.0.0.1;database=master;user id=sa;password=qwerty123";
// Generate a random db name
DatabaseName = "monotest" + Guid.NewGuid().ToString().Substring(0, 7);
- sql = ConnectionHolder<SqlConnection>.FromEnvVar(SqlEnvVar);
+ sql = CreateSqlConfig (SqlEnvVar);
if (sql != null)
CreateMssqlDatabase();
#if !NO_ODBC
- odbc = ConnectionHolder<OdbcConnection>.FromEnvVar(OdbcEnvVar);
+ odbc = CreateOdbcConfig (OdbcEnvVar);
if (odbc != null)
CreateMysqlDatabase();
#endif
}
+ static ConnectionHolder<SqlConnection> CreateSqlConfig (string envVarName)
+ {
+ string connectionString = Environment.GetEnvironmentVariable (envVarName);
+ if (string.IsNullOrEmpty (connectionString))
+ return null;
+
+ SqlConnection connection;
+#if MOBILE
+ connection = new SqlConnection ();
+#else
+ DbProviderFactory factory = DbProviderFactories.GetFactory ("System.Data.SqlClient");
+ connection = (SqlConnection)factory.CreateConnection ();
+#endif
+
+ var engine = new EngineConfig {
+ Type = EngineType.SQLServer,
+ ClientVersion = 9,
+ QuoteCharacter = """,
+ SupportsMicroseconds = true,
+ SupportsUniqueIdentifier = true,
+ SupportsTimestamp = true,
+ };
+
+ return new ConnectionHolder<SqlConnection> (engine, connection, connectionString);
+ }
+
+#if !NO_ODBC
+ static ConnectionHolder<OdbcConnection> CreateOdbcConfig (string envVarName)
+ {
+ string connectionString = Environment.GetEnvironmentVariable (envVarName);
+ if (string.IsNullOrEmpty (connectionString))
+ return null;
+
+ DbProviderFactory factory = DbProviderFactories.GetFactory ("System.Data.Odbc");
+ var connection = (OdbcConnection)factory.CreateConnection ();
+
+ var engine = new EngineConfig {
+ Type = EngineType.MySQL,
+ QuoteCharacter = "`",
+ RemovesTrailingSpaces = true,
+ EmptyBinaryAsNull = true,
+ SupportsDate = true,
+ SupportsTime = true
+ };
+
+ return new ConnectionHolder<OdbcConnection> (engine, connection, connectionString);
+ }
+#endif
+
private void CreateMssqlDatabase()
{
DBHelper.ExecuteNonQuery(sql.Connection, $"CREATE DATABASE [{DatabaseName}]");
public string ConnectionString { get; set; }
- public ConnectionHolder(EngineConfig engineConfig, DbProviderFactory dbProviderFactory, string connectionString)
+ public ConnectionHolder(EngineConfig engineConfig, TConnection connection, string connectionString)
{
EngineConfig = engineConfig;
- connection = (TConnection)dbProviderFactory.CreateConnection();
+ this.connection = connection;
ConnectionString = connectionString;
}
-
- public static ConnectionHolder<TConnection> FromEnvVar(string envVarName)
- {
-#if NO_CONFIGURATION
- throw new NotImplementedException ();
-#else
- string variable = Environment.GetEnvironmentVariable(envVarName) ?? string.Empty;
- var envParts = variable.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
- if (envParts.Length == 0 || string.IsNullOrEmpty(envParts[0]))
- return null;
-
- string connectionName = envParts[0];
- string connectionString = variable.Remove(0, envParts[0].Length + 1);
-
- ConnectionConfig[] connections = null;
- try
- {
- connections = (ConnectionConfig[]) ConfigurationManager.GetSection("providerTests");
- }
- catch
- {
- return null;
- }
-
- foreach (ConnectionConfig connConfig in connections)
- {
- if (connConfig.Name != connectionName)
- continue;
-
- DbProviderFactory factory = DbProviderFactories.GetFactory(connConfig.Factory);
- return new ConnectionHolder<TConnection>(connConfig.Engine, factory, connectionString);
- }
- throw new InvalidOperationException($"Connection {connectionName} not found");
-#endif
- }
}
}
private EngineType type;
private int clientVersion;
- private EngineConfig ()
+ public EngineConfig ()
{
}
/// </summary>
public string QuoteCharacter {
get { return quoteCharacter; }
+ set { quoteCharacter = value; }
}
public EngineType Type {
get { return type; }
+ set { type = value; }
}
public bool RemovesTrailingSpaces {
get { return removesTrailingSpaces; }
+ set { removesTrailingSpaces = value; }
}
public bool EmptyBinaryAsNull {
get { return emptyBinaryAsNull; }
+ set { emptyBinaryAsNull = value; }
}
public bool SupportsMicroseconds {
get { return supportsMicroseconds; }
+ set { supportsMicroseconds = value; }
}
public bool SupportsUniqueIdentifier {
get { return supportsUniqueIdentifier; }
+ set { supportsUniqueIdentifier = value; }
}
public bool SupportsDate {
get { return supportsDate; }
+ set { supportsDate = value; }
}
public bool SupportsTime {
get { return supportsTime; }
+ set { supportsTime = value; }
}
public bool SupportsTimestamp {
get { return supportsTimestamp; }
+ set { supportsTimestamp = value; }
}
public int ClientVersion {
get { return clientVersion; }
+ set { clientVersion = value; }
}
public static EngineConfig FromXml (XmlNode config)
+++ /dev/null
-System.Data.Odbc/OdbcCommandBuilderTest.cs
-System.Data.Odbc/OdbcCommandTest.cs
-System.Data.Odbc/OdbcConnectionStringBuilderTest.cs
-System.Data.Odbc/OdbcConnectionTest.cs
-System.Data.Odbc/OdbcDataAdapterTest.cs
-System.Data.Odbc/OdbcDataReaderTest.cs
-System.Data.Odbc/OdbcMetaDataCollectionNamesTest.cs
-System.Data.Odbc/OdbcParameterCollectionTest.cs
-System.Data.Odbc/OdbcParameterTest.cs
-System.Data.Odbc/OdbcPermissionAttributeTest.cs
-System.Data.Odbc/OdbcPermissionTest.cs
-System.Data.OleDb/OleDbCommandTest.cs
-System.Data.OleDb/OleDbConnectionTest.cs
-System.Data.OleDb/OleDbDataAdapterTest.cs
-System.Data.OleDb/OleDbMetaDataCollectionNamesTest.cs
-System.Data.OleDb/OleDbParameterCollectionTest.cs
-System.Data.OleDb/OleDbPermissionAttributeTest.cs
-System.Data.OleDb/OleDbPermissionTest.cs
+++ /dev/null
-System.Data.Odbc/OdbcCommandBuilderTest.cs
-System.Data.Odbc/OdbcCommandTest.cs
-System.Data.Odbc/OdbcConnectionStringBuilderTest.cs
-System.Data.Odbc/OdbcConnectionTest.cs
-System.Data.Odbc/OdbcDataAdapterTest.cs
-System.Data.Odbc/OdbcDataReaderTest.cs
-System.Data.Odbc/OdbcMetaDataCollectionNamesTest.cs
-System.Data.Odbc/OdbcParameterCollectionTest.cs
-System.Data.Odbc/OdbcParameterTest.cs
-System.Data.Odbc/OdbcPermissionAttributeTest.cs
-System.Data.Odbc/OdbcPermissionTest.cs
-System.Data.OleDb/OleDbCommandTest.cs
-System.Data.OleDb/OleDbConnectionTest.cs
-System.Data.OleDb/OleDbDataAdapterTest.cs
-System.Data.OleDb/OleDbMetaDataCollectionNamesTest.cs
-System.Data.OleDb/OleDbParameterCollectionTest.cs
-System.Data.OleDb/OleDbPermissionAttributeTest.cs
-System.Data.OleDb/OleDbPermissionTest.cs