以下為我建的一個數據庫類,我開啟每個窗體SqlConnection都會重新連接,因為我有加     _SqlBaseClass_DB=new SqlBaseClass_DB(ConnStr)到from_Load中我現在想像delphi一樣的ADOConnection 一樣,定義一個全局的_SqlConnection,
應該怎么樣做啊.我想在frmMain 中 public static SqlBaseClass_DB _SqlBaseClass_DB 是不是最好的辦法,另外SqlConnection.Close; 是將連放入連接池中,Close是不是不是真的中斷public class SqlBaseClass_DB
{
        private SqlConnection  _SqlConnection;
private SqlDataAdapter _SqlDataAdapter;
private DataSet        _DataSet;
private DataTable      _DataTable;
private SqlCommand     _SqlCommand;
private SqlDataReader  _SqlDataReader;
private DataView       _DataView;
private SqlCommandBuilder _SqlCommandBuilder;
    
private string _SqlText;    //Sql 文本 
private string _ErrInfo;    //錯誤信息
private string _ConnStr;    //連接字符串
private readonly string  _Caption="錯誤";        //對話框Caption
private readonly MessageBoxButtons _Buttons=MessageBoxButtons.OK;  //對話框按鈕
private readonly MessageBoxIcon  _Icon=MessageBoxIcon.Error;       //對話框顯示的圖標 public SqlBaseClass_DB()
{
//
// TODO: Add constructor logic here
//
_ConnStr=  @"user id=sa;PWD=;data source=EH02;" +
          "persist security info=False;" +
            "initial catalog=FSYH";
            _SqlConnection =new SqlConnection(_ConnStr);  } public SqlBaseClass_DB(string ConnectionStr)
{
           _SqlConnection =new SqlConnection(ConnectionStr);
} public bool Open()        //開啟連接
{
try
{
if (_SqlConnection.State!=ConnectionState.Open)
{
_SqlConnection.Open();

}
return true;
}
catch(SqlException EX)
{
SqlExceptionShow(EX);
_SqlConnection.Close();
return false;
}

} public void Close()      //關閉連接
{
if (_SqlConnection.State==ConnectionState.Open)
               _SqlConnection.Close();
} public SqlConnection GetCon()
{
this.Open();
return _SqlConnection;
} public bool Exectute(string cmdtxt)    //執行SQL 語句段
{
this.Open();
_SqlCommand=new SqlCommand(cmdtxt,this.GetCon());
try
{
_SqlCommand.ExecuteNonQuery();
return true;

}
catch(SqlException EX)
{
SqlExceptionShow(EX);
return false;

}
} public DataSet GetDataSet(string cmdtxt)   //獲得數據集
{
try
{
_SqlDataAdapter= new SqlDataAdapter(cmdtxt,this.GetCon());
_DataSet=new DataSet();
_SqlDataAdapter.Fill(_DataSet);
return _DataSet;
}
catch(SqlException EX)
{
SqlExceptionShow(EX);
return null;
}
}
public DataSet GetDataSet(string cmdtxt,string TableName)   //獲得數據集(可設定表名)
{
try
{
_SqlDataAdapter= new SqlDataAdapter(cmdtxt,this.GetCon());
_DataSet=new DataSet();
_SqlDataAdapter.Fill(_DataSet,TableName);
return _DataSet;
}
catch(SqlException EX)
{
SqlExceptionShow(EX);
return null;
}
} private void SqlExceptionShow(SqlException EX)  //顯示異常
{
for (int i=0;i<EX.Errors.Count;i++)
{
_ErrInfo += "錯誤序號 :" + i + "\n" +
"出錯信息 :" + EX.Errors[i].Message + "\n" +
"出錯來源 :" + EX.Errors[i].Source + "\n" +
"程    序 :" + EX.Errors[i].Procedure;
}
MessageBox.Show(_ErrInfo,_Caption,_Buttons,_Icon);
} public SqlDataReader GetReader(string cmdtxt)
{
_SqlCommand=new SqlCommand(cmdtxt,this.GetCon());
_SqlDataReader = _SqlCommand.ExecuteReader();
try
{
return _SqlDataReader;
}
catch(SqlException EX)
{
SqlExceptionShow(EX);
return null;
} } public DataView GetDataView(string cmdtxt)   
{
try
{
_SqlDataAdapter=new SqlDataAdapter(cmdtxt,this.GetCon());
_SqlDataAdapter.Fill(_DataSet);
_DataView=new DataView(_DataSet.Tables[0]);
return _DataView;
}
catch(SqlException EX)
{
SqlExceptionShow(EX);
return null;
} } public DataTable GetTable(string cmdtxt,string tablename)
{
try
{
_SqlDataAdapter = new SqlDataAdapter(cmdtxt, this.GetCon());
_DataTable=new DataTable(tablename);
_SqlDataAdapter.Fill(_DataTable);
return _DataTable;
}
catch(SqlException EX)
{
SqlExceptionShow(EX);
return null;
}
} #region  屬性 public string SqlText
{
set
{
_SqlText = value;
}
get
{
return _SqlText;
}
} public string ErrInfo
{
set
{
_ErrInfo = value;
}
get
{
return _ErrInfo;
}
} public string ConnStr
{
set
{
_ConnStr = value;
}
get
{
return _ConnStr;
}
}
#endregion