public static IDbCommand CreateCommand(this IDbProvider dbProvider, string sql, CommandType cmdType = CommandType.Text, Func<IDbCommand, IDbDataParameter[]> getParas = null) { var conn = dbProvider.CreateConnection(); if (conn.State != ConnectionState.Open) conn.Open(); var trans = conn.BeginTransaction(); var cmd = dbProvider.CreateCommand(conn); IDbDataParameter[] paras = null; if (getParas != null) paras = getParas(cmd); dbProvider.PrepareCommand(ref cmdType, ref sql, ref paras); cmd.CommandType = cmdType; cmd.CommandText = sql; if (paras != null && paras.Length > 0) { foreach (var p in paras) { dbProvider.AttachParameter(cmd, p); } } cmd.Transaction = trans; return cmd; }
/// <summary> /// 执行一个DbCommand并返回DataSet /// </summary> /// <param name="comm"></param> /// <returns></returns> public static DataSet ExecuteCommand(this DbProviderFactory dbFactory, DbCommand comm, string connectionStringName) { DbConnection conn = dbFactory.CreateConnection(connectionStringName); comm.Connection = conn; DbDataAdapter adapter = dbFactory.CreateDataAdapter(); adapter.SelectCommand = comm; try { DataSet ds = new DataSet(); adapter.Fill(ds); return ds; } catch (Exception eX) { throw eX; } finally { if (ConnectionState.Open == conn.State) conn.Close(); } }
/// <summary> /// MySql Connection을 연결합니다. /// </summary> /// <param name="db">DAAB MySqlProvider 인스턴스</param> /// <param name="tryCount">연결 실패 시, 재 시도 횟수</param> /// <returns>새로 연결된 <see cref="MySqlConnection"/>의 인스턴스, 만약 연결에 실패했다면 null을 반환합니다.</returns> internal static MySqlConnection OpenConnection(this MySqlDatabase db, int tryCount) { if(IsDebugEnabled) log.Debug("MySql Database를 연결하려고 합니다..."); MySqlConnection connection = null; var count = 0; for(var i = 0; i < tryCount; i++) { try { if(IsDebugEnabled) log.Debug("MySqlConnection을 생성하고, 비동기 방식으로 Open합니다. 시도 횟수=[{0}]", ++count); connection = (MySqlConnection)db.CreateConnection(); connection.Open(); if(connection.State == ConnectionState.Open) { if(IsDebugEnabled) log.Debug("MySqlConnection을 연결했습니다!!!"); return connection; } } catch(Exception ex) { HandleConnectionError(db, ex, count); } } Guard.Assert(connection != null && connection.State != ConnectionState.Closed, "MySql Connection을 열지 못했습니다!!!"); return connection; }
public static IDbConnection CreateConnection(this DbProviderFactory factory, Action<IDbConnection> setup) { IDbConnection connection = factory.CreateConnection(); setup(connection); return connection; }
public static IDbConnection OpenConnection(this DbProviderFactory @this, string connectionString) { var connection = @this.CreateConnection(); connection.ConnectionString = connectionString; connection.Open(); return connection; }
/// <summary> /// 指定されたデータベースに対する接続管理機能を生成します。 /// </summary> /// <param name="dbKind">データーベースの種類</param> /// <param name="connectionString">接続文字列</param> /// <returns>データーベース接続</returns> public static IDbConnection CreateConnection(this DbKind dbKind, string connectionString) { if (connectionString == null) throw new ArgumentNullException(nameof(connectionString)); var connection = dbKind.CreateConnection(); connection.ConnectionString = connectionString; return connection; }
public static DbConnection CreateConnectionWithTrace(this DbProviderFactory factory) #endif { #if DBTrace File.AppendAllText(LogDBTrace, "Creating connection " + new System.Diagnostics.StackTrace().ToString()); #endif return factory.CreateConnection(); }
public static Lazy<IConnection> GetLazyConnection(this IConnectionFactory connectionFactory) { return new Lazy<IConnection>(() => { IConnection connection = connectionFactory.CreateConnection(); connection.Start(); return connection; }, LazyThreadSafetyMode.ExecutionAndPublication); }
/// <summary> /// 返回实现 System.Data.Common.DbConnection 类的提供程序的类的一个新实例并设置连接字符串。 /// </summary> /// <param name="factory">DbProviderFactory 实例。</param> /// <param name="connectionString">用于打开数据库的连接。</param> /// <returns>System.Data.Common.DbConnection 的新实例。</returns> public static DbConnection CreateConnection(this DbProviderFactory factory, string connectionString) { DbConnection connection = factory.CreateConnection(); if (connection != null) { connection.ConnectionString = connectionString; } return connection; }
/// <summary> /// Extension method to create and open a connection. /// </summary> /// <param name="factory">Connection factory to create from.</param> /// <returns>An open connection.</returns> public static IDbConnection CreateOpenConnection(this IDbConnectionFactory factory) { if (factory == null) { throw new ArgumentNullException("factory"); } var connection = factory.CreateConnection(); connection.Open(); return connection; }
public static void ExecuteNonQuery(this DbProviderFactory provider, string connectionString, string command) { using (DbConnection conn = provider.CreateConnection()) { conn.ConnectionString = connectionString; conn.Open(); using (DbCommand cmd = conn.CreateCommand()) { cmd.CommandText = command; cmd.ExecuteNonQuery(); } } }
public static DbConnection CreateConnection(this DbProviderFactory factory , string connectionStringName) { // Ensure we can identify the connection string... if (connectionStringName == null) throw new ArgumentNullException("connectionStringName"); string cs = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; if (cs == null) throw new ArgumentException(String.Format("Connection string not defined: {0}", connectionStringName)); DbConnection cn = factory.CreateConnection(); cn.ConnectionString = cs; return cn; }
public static object ExecuteScalar(this DbProviderFactory provider, string connectionString, string command) { using (DbConnection conn = provider.CreateConnection()) { conn.ConnectionString = connectionString; conn.Open(); using (DbCommand cmd = conn.CreateCommand()) { cmd.CommandText = command; object ret = cmd.ExecuteScalar(); return ret; } } }
/// <summary> /// Oracle 연결이 성공하지 못하는 경우가 많아, 재시도 횟수 만큼 간격을 두고 연결을 시도합니다. /// Oracle DB의 Process 수를 기본(40)에서 100 이상으로 늘려주면 연결이 성공할 확률이 높습니다. /// </summary> /// <param name="db">DAAB OracleProvider 인스턴스</param> /// <param name="tryCount">연결 실패 시, 재 시도 횟수</param> /// <returns>새로 연결된 <see cref="OracleConnection"/>의 인스턴스, 만약 연결에 실패했다면 null을 반환합니다.</returns> public static OracleConnection OpenConnection(this OracleDatabase db, int tryCount) { // NOTE: Oracle의 경우 Connection이 연결 안 되는 에러(ORA-12519) 가 자주 발생한다. 그래서, 시간 Time을 두고, 재시도하도록 하였다. // HINT: http://forums.oracle.com/forums/thread.jspa?messageID=1145120, // HINT: http://kyeomstar.tistory.com/160 if(IsDebugEnabled) log.Debug("Oracle Database를 연결하려고 합니다..."); OracleConnection connection = null; for(var i = 0; i < tryCount; i++) { var count = i + 1; try { if(IsDebugEnabled) log.Debug("OracleConnection을 생성하고, 비동기 방식으로 Open합니다. 시도 횟수=[{0}]", (i + 1)); connection = (OracleConnection)db.CreateConnection(); connection.Open(); //Task.Factory.FromAsync(connection.BeginOpen, // connection.EndOpen, // null) // .WaitAsync(TimeSpan.FromSeconds(15)); if(connection.State == ConnectionState.Open) { if(IsDebugEnabled) log.Debug("OracleConnection을 연결했습니다!!!"); return connection; } } catch(AggregateException age) { age.Handle(ex => { HandleConnectionError(db, ex, count); return true; }); } catch(Exception ex) { HandleConnectionError(db, ex, count); } } Guard.Assert(connection != null && connection.State != ConnectionState.Closed, "Oracle Connection을 열지 못했습니다!!!"); return connection; }
public static void ExecuteNonQuery(this DbProviderFactory provider, string connectionString, string command) { // Connect & Execute cmd.. using (var conn = provider.CreateConnection()) { conn.ConnectionString = connectionString; try { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = command; cmd.ExecuteNonQuery(); } } finally { conn.Close(); } } }
public static object ExecuteScalar(this DbProviderFactory provider, string connectionString, string command) { // Connect & Execute cmd.. using (var conn = provider.CreateConnection()) { conn.ConnectionString = connectionString; try { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = command; var ret = cmd.ExecuteScalar(); return ret; } } finally { conn.Close(); } } }
/// <summary> /// MySQL Connection을 연결합니다. /// </summary> /// <param name="db">DAAB SqlDatabase 인스턴스</param> /// <param name="tryCount">연결 실패 시, 재 시도 횟수</param> /// <returns>새로 연결된 <see cref="SqlConnection"/>의 인스턴스, 만약 연결에 실패했다면 null을 반환합니다.</returns> internal static SqlConnection OpenConnection(this SqlDatabase db, int tryCount = 15) { if(IsDebugEnabled) log.Debug("SQL Server Database를 연결하려고 합니다..."); SqlConnection connection = null; var count = 0; for(var i = 0; i < tryCount; i++) { try { if(IsDebugEnabled) log.Debug("SqlConnection을 생성하고, 비동기 방식으로 Open합니다. 시도 횟수=[{0}]", ++count); connection = (SqlConnection)db.CreateConnection(); connection.Open(); if(connection.State == ConnectionState.Open) { if(IsDebugEnabled) log.Debug("SqlConnection을 연결했습니다!!!"); return connection; } } catch(AggregateException age) { var count1 = count; age.Handle(ex => { HandleConnectionError(db, ex, count1); return true; }); } catch(Exception ex) { HandleConnectionError(db, ex, count); } } Guard.Assert(connection != null && connection.State != ConnectionState.Closed, "Connection을 열지 못했습니다!!!"); return connection; }
public static DbConnection CreateConnection(this DbProviderFactory dbFactory, string connectionStringName) { DbConnection conn = dbFactory.CreateConnection(); conn.ConnectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; return conn; }
public static void CreateConnection(this ICorDebugManagedCallback2 instance, IntPtr pProcess, uint dwConnectionId, IntPtr pConnName) { instance.CreateConnection(pProcess, dwConnectionId, pConnName); }
public static DbConnection CreateSqlServerConnectionForTests_Northwind(this DbProviderFactory factory) { return factory.CreateConnection(@"Data Source=(localdb)\v11.0; AttachDbFileName=" + Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\..\..\samples\App\bin\Debug\Northwind\Northwind.mdf")) + "; Integrated Security=true; MultipleActiveResultSets=true"); }
public static DbConnection CreateSqlServerConnectionForTests(this DbProviderFactory factory) { return factory.CreateConnection(@"Data Source=(localdb)\v11.0;"); }
private static IDbConnection GetConnection(this AdoAdapter adapter) { return adapter.CreateConnection(); }
/// <summary> /// 执行非查询的DbCommand /// </summary> /// <param name="comm"></param> /// <param name="trans"></param> public static void ExecuteNoneQueryCommand(this DbProviderFactory dbFactory, DbCommand comm, DbTransaction trans, string connectionStringName) { DbConnection conn; if (null == trans) conn = dbFactory.CreateConnection(connectionStringName); else conn = trans.Connection; comm.Connection = conn; if (null != trans) comm.Transaction = trans; try { if (ConnectionState.Open != conn.State) conn.Open(); comm.ExecuteNonQuery(); if (null == trans) conn.Close(); } catch (Exception eX) { throw eX; } finally { if (null == trans && ConnectionState.Open == conn.State) conn.Close(); } }