ado.net will take care connection pool, you don't need to worry about it.for encapsulated data-access layer, you can use Microsoft DataAcess Application Block.

解决方案 »

  1.   

    看我例子:using System;
    using System.Data;
    using System.Data.OracleClient;
    using System.Collections;namespace monitor
    {
    /// <summary>
    /// 不要改变
    /// Summary description for DA.
    /// </summary>
    public class DA
    {
    static OracleConnection m_conn = null ; public DA()
    {
    //
    // TODO: Add constructor logic here
    //
    } public static DataTable 查询数据库( string 查询语句 )
    {
    OracleConnection myConnection = 创建连接() ;
    DataTable dt = new DataTable() ;
    OracleDataAdapter da = new OracleDataAdapter( 查询语句, myConnection ) ;
    da.Fill( dt ) ;
    myConnection.Close() ;
    return dt ;
    } /// <summary>
    /// 返回的int数组的值正好对应每一条Sql执行的结果
    /// </summary>
    /// <param name="arr"></param>
    /// <returns></returns>
    public static int[] 事务处理( string[] arr )
    {
    string str = "" ;
    int[]  return_arr = new int[ arr.Length ] ;
    OracleConnection 数据库连接器 = 创建连接();
    数据库连接器.Open();
    OracleTransaction 事务 = 数据库连接器.BeginTransaction();
    OracleCommand cmd = new OracleCommand();
    cmd.Transaction = 事务;
    cmd.Connection = 数据库连接器 ;
    try
    {
    for( int i = 0 ; i < arr.Length ; i++ )
    {
    if( arr[i] == null || arr[i].Trim() == "" )
    continue ;
    cmd.CommandText = arr[i] ;
    return_arr[i] = cmd.ExecuteNonQuery();
    }
    事务.Commit();
    }
    catch( Exception ep )
    {
    str = ep.Message ;
    事务.Rollback();
    for( int i = 0 ; i < arr.Length ; i++ )
    return_arr[i] = -1 ;
    }
    finally
    {
    数据库连接器.Close();
    }
    return return_arr;
    } public static OracleConnection 创建连接()
    {
    //string link = XmlConfig.GetAppConfig( "ConnStr" ) ;
    if( m_conn == null )
    m_conn = new OracleConnection( "Data Source=orcl;User ID=monitor;Password=monitor"  ) ;
    return m_conn ;
    } public static int 更新数据库( string 更新语句 )
    {
    OracleConnection Conn = 创建连接() ;
    OracleCommand Comm = new OracleCommand( 更新语句, Conn ) ;
    int i = 0;

    try
    {
    Comm.Connection.Open() ;
    i = Comm.ExecuteNonQuery() ;
    }
    catch
    {
    }
    finally
    {
    Comm.Connection.Close() ;
    }
    return i ;
    } public static object GetSingleValue( string select )
    {
    OracleConnection Conn = 创建连接() ;
    OracleCommand Comm = new OracleCommand( select, Conn ) ;
    object obj = null ;

    try
    {
    Comm.Connection.Open() ;
    obj = Comm.ExecuteScalar() ;
    }
    catch
    {
    }
    finally
    {
    Comm.Connection.Close() ;
    }
    return obj ;
    }
    }
    }