主题:12
最近看到一个程序,有些细节问题怎么也看不懂,就是IDispose的用法,还有一些其他的,看了MSDN,上面的话太专业了,有点看天书的感觉,希望各位高手不吝赐教。
下面是这个程序中的一个DLL块。主要看不懂的就是最结尾处的一点点。
using System;
using System.Data;
using System.Data.SqlClient;
namespace Aptech.Student.Common
{
public class DataBaseOperate:IDisposable
[color=FF0000]/*为什么要继承IDispose类呢?*/[/color]
{
private string m_sConnectionString;
// 数据库连接标志
private bool m_bConnected;
// 存储过程开启标志
private bool m_bTransaction;
//数据库连接对象
private SqlConnection m_sqlConnection;
private SqlCommand m_sqlCommand;
private SqlTransaction m_sqlTransaction;
private SqlDataAdapter m_sqlDataAdapter;
public DataBaseOperate():this("user id=sa;password=510902;data source=\"YAOYANG\\YAOYANG\";initial catalog=Student")
{
}
public DataBaseOperate(
string sConnectionString)
{
if (sConnectionString != "")
{
m_sConnectionString = sConnectionString;
m_bConnected = false;
}
m_bTransaction = false;
}
/// <summary>
/// 连接数据库,并打开数据库连接
/// </summary>
/// <returns>成功返回true</returns>
private bool ConnectDataBase()
{
if (!m_bConnected)
{
try
{
if (m_sqlConnection == null)
{
m_sqlConnection = new SqlConnection(m_sConnectionString);
m_sqlConnection.Open();
}
if (m_sqlCommand == null)
{
m_sqlCommand = new SqlCommand();
}
m_bConnected = true;
m_sqlCommand.Connection = m_sqlConnection;
}
catch(SqlException e)
{
throw e;
}
}
return true;
}
/// <summary>
/// 关闭数据库,释放数据库资源
/// </summary>
/// <returns>成功返回true</returns>
public bool CloseDataBase()
{
Dispose();
return true;
}
throw(new ApplicationException("没有建立数据库连接。"));
{
m_sqlDataAdapter.Fill(
dataSet,
sTableName);
}
catch(SqlException e)
{
//如果正在执行事务,回滚
if(m_bTransaction)
{
m_sqlTransaction.Rollback();
}
throw e;
}
return dataSet;
}
/// <summary>
/// 执行修改数据库操作,修改、删除等无返回值的操作
/// </summary>
/// <param name="sSql">执行的SQL语句</param>
/// <returns>成功执行返回True</returns>
public bool Execute(
string sSql)
{
if (!ConnectDataBase())
{
if(m_bTransactio
下面是这个程序中的一个DLL块。主要看不懂的就是最结尾处的一点点。
using System;
using System.Data;
using System.Data.SqlClient;
namespace Aptech.Student.Common
{
public class DataBaseOperate:IDisposable
[color=FF0000]/*为什么要继承IDispose类呢?*/[/color]
{
private string m_sConnectionString;
// 数据库连接标志
private bool m_bConnected;
// 存储过程开启标志
private bool m_bTransaction;
//数据库连接对象
private SqlConnection m_sqlConnection;
private SqlCommand m_sqlCommand;
private SqlTransaction m_sqlTransaction;
private SqlDataAdapter m_sqlDataAdapter;
public DataBaseOperate():this("user id=sa;password=510902;data source=\"YAOYANG\\YAOYANG\";initial catalog=Student")
{
}
public DataBaseOperate(
string sConnectionString)
{
if (sConnectionString != "")
{
m_sConnectionString = sConnectionString;
m_bConnected = false;
}
m_bTransaction = false;
}
/// <summary>
/// 连接数据库,并打开数据库连接
/// </summary>
/// <returns>成功返回true</returns>
private bool ConnectDataBase()
{
if (!m_bConnected)
{
try
{
if (m_sqlConnection == null)
{
m_sqlConnection = new SqlConnection(m_sConnectionString);
m_sqlConnection.Open();
}
if (m_sqlCommand == null)
{
m_sqlCommand = new SqlCommand();
}
m_bConnected = true;
m_sqlCommand.Connection = m_sqlConnection;
}
catch(SqlException e)
{
throw e;
}
}
return true;
}
/// <summary>
/// 关闭数据库,释放数据库资源
/// </summary>
/// <returns>成功返回true</returns>
public bool CloseDataBase()
{
Dispose();
return true;
}
throw(new ApplicationException("没有建立数据库连接。"));
{
m_sqlDataAdapter.Fill(
dataSet,
sTableName);
}
catch(SqlException e)
{
//如果正在执行事务,回滚
if(m_bTransaction)
{
m_sqlTransaction.Rollback();
}
throw e;
}
return dataSet;
}
/// <summary>
/// 执行修改数据库操作,修改、删除等无返回值的操作
/// </summary>
/// <param name="sSql">执行的SQL语句</param>
/// <returns>成功执行返回True</returns>
public bool Execute(
string sSql)
{
if (!ConnectDataBase())
{
if(m_bTransactio