我是新手,最好能告诉我怎么用。
Email:[email protected]或者贴出来。谢谢!
Email:[email protected]或者贴出来。谢谢!
解决方案 »
- html浏览正常的页面,把html代码复制到asp.net页面,浏览不正常
- 初次使用TreeView控件,求解答
- 页面传值的问题?困惑 (传汉字时出现的问题)
- 关于showModalDialog的问题
- 请问高手,如何在DataGrid中的删除按钮中删除前加一提示是否删除的弹出消息框,来者有分,从不失言
- 用这种方法,如何改变datagrid某列的宽度?代码写在何处?
- Asp.net的代码都写在什么地方
- 《高难度题目》===asp.net如何读取asp的session?===
- 这是用VB写的统计在线人数的例子,有几处不太懂,请指教!!!!
- asp.net的运行环境在win2000里应怎样配置?
- 图片在磁盘中,路径在库里,怎样能知道图片的大上(c#)
- 关于修改内容的问题,在线等,就剩10分,请大家帮帮忙!谢谢!
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data;namespace My.Common.Database
{
/// <summary>
/// 对SqlServer的支持
/// </summary>
public class SqlDBOperate:DBOperate
{
//数据库连接
private SqlConnection conn;
//事务处理类
private SqlTransaction trans; //指示当前操作是否在事务中
private bool bInTrans = false; /// <summary>
/// 在构造方法中创建数据库连接
/// </summary>
/// <param name="strConnection"></param>
public SqlDBOperate(string strConnection)
{
this.conn = new SqlConnection(strConnection);
} #region 重写基类的属性
/// <summary>
/// 改变数据库连接的类型
/// 重写了基类的虚属性
/// </summary>
public override IDbConnection baseConnection
{
get
{
return this.conn;
}
set
{
this.conn = (SqlConnection)value;
}
} /// <summary>
/// 改变数据库事务的类型
/// 重写了基类的虚属性
/// </summary>
public override IDbTransaction baseTransaction
{
get
{
return this.trans;
}
set
{
this.trans = (SqlTransaction)value;
}
}
#endregion #region 重写基类的方法
/// <summary>
/// 释放非托管资源
/// </summary>
public override void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
} /// <summary>
/// 打开数据库连接
/// </summary>
public override void Open()
{
if (conn.State.Equals(ConnectionState.Closed))
{
conn.Open();
}
} /// <summary>
/// 关闭数据库连接
/// </summary>
public override void Close()
{
if (conn.State.Equals(ConnectionState.Open))
{
conn.Close();
}
} /// <summary>
/// 开始一个事务
/// </summary>
public override void BeginTran()
{
if (!this.bInTrans)
{
trans = conn.BeginTransaction();
bInTrans = true;
}
} /// <summary>
/// 提交一个事务
/// </summary>
public override void CommitTran()
{
if(this.bInTrans)
{
trans.Commit();
bInTrans = false;
}
} /// <summary>
/// 回滚一个事务
/// </summary>
public override void RollBackTran()
{
if(this.bInTrans)
{
trans.Rollback();
bInTrans = false;
}
}
#endregion #region Dispose(bool disposing)
/// <summary>
/// 为什么会是protected 而不是private
/// </summary>
/// <param name="disposing"></param>
protected void Dispose(bool disposing)
{
if(disposing==false)
{
return;
} if(this.bInTrans==true&& this.trans!= null)
{
this.trans.Dispose();
this.trans= null;
}
if(this.conn!= null)
{
if(this.conn.State== ConnectionState.Open)
{
this.conn.Close();
}
this.conn.Dispose();
this.conn= null;
}
}
#endregion #region GerPreCommand(string strSql, IDataParameter[] parameters, string strCommandType)
/// <summary>
/// 获取一个SqlCommand对象
/// </summary>
/// <param name="strSql">sql语句</param>
/// <param name="parameters">命令参数</param>
/// <param name="strCommandType">命令类型</param>
/// <returns></returns>
private SqlCommand GetPreCommand(string strSql, IDataParameter[] parameters, string strCommandType)
{
//初始化一个command对象
SqlCommand cmdSql = conn.CreateCommand();
try
{
//设置SqlCommand对象的sql语句或存储过程
cmdSql.CommandText = strSql;
if(strCommandType == "PROCEDURE")
{
cmdSql.CommandType = CommandType.StoredProcedure;
} //判断是否在事务中
if(this.bInTrans)
{
//设置SqlCommand对象所在的事务
cmdSql.Transaction = this.trans;
} //指定各个参数的取值
foreach(IDataParameter SqlParm in parameters)
{
//设置SqlCommand对象的参数
cmdSql.Parameters.Add(SqlParm);
}
}
catch(Exception ex)
{
throw ex;
}
finally
{
}
return cmdSql;
}
#endregion
#region 执行update、insert、delete 语句,如果成功返回受影响的条数,失败抛出一个异常
/// <summary>
/// 带预处理的
/// </summary>
/// <param name="strSql"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public override int ExecPreUpdateSql(string strSql, IDataParameter[] parameters)
{
//初始化一个command对象
SqlCommand cmdSql = GetPreCommand(strSql, parameters, "SQL");
//判断是否在事务中
if(this.bInTrans)
{
cmdSql.Transaction = this.trans;
} //返回受影响的条数
return cmdSql.ExecuteNonQuery();
} /// <summary>
/// 不带预处理的
/// </summary>
/// <param name="strSql"></param>
/// <returns></returns>
public override int ExecUpdateSql(string strSql)
{
SqlCommand cmdSql = conn.CreateCommand();
cmdSql.CommandText = strSql; //判断是否在事务中
if(this.bInTrans)
{
cmdSql.Transaction = this.trans;
} return cmdSql.ExecuteNonQuery();
}
#endregion #region 执行select 语句,共分三种情况 返回DataSet 、返回DataReader 、返回DataTable
/// <summary>
/// 带预处理的返回DataSet对象
/// </summary>
/// <param name="strSql"></param>
/// <param name="parameters"></param>
/// <param name="strTableName"></param>
/// <returns></returns>
public override System.Data.DataSet ExecPreQueryForDataSet(string strSql, IDataParameter[] parameters, string strTableName)
{
//初始化一个DataSet对象,一个DataAdapter对象
System.Data.DataSet dsSql = new DataSet();
System.Data.SqlClient.SqlDataAdapter daSql = new SqlDataAdapter(strSql,conn); //初始化一个command对象
SqlCommand cmdSql = GetPreCommand(strSql, parameters, "SQL"); //返回DataSet对象
daSql.SelectCommand = cmdSql;
daSql.Fill(dsSql,strTableName);
return dsSql;
}
/// <summary>
/// 带预处理的返回DataReader对象
/// </summary>
/// <param name="strSql"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public override System.Data.IDataReader ExecPreQueryForDataReader(string strSql, IDataParameter[] parameters)
{
//初始化一个command对象
SqlCommand cmdSql = GetPreCommand(strSql, parameters, "SQL");
//返回DataReader对象
return cmdSql.ExecuteReader();
}
/// <summary>
/// 带预处理的返回DataTable对象
/// </summary>
/// <param name="strSql"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public override System.Data.DataTable ExecPreQueryForDataTable(string strSql, IDataParameter[] parameters)
{
//初始化一个DataAdapter对象,一个DataTable对象
System.Data.DataTable dtSql = new DataTable();
System.Data.SqlClient.SqlDataAdapter daSql = new SqlDataAdapter(strSql,conn); //初始化一个command对象
SqlCommand cmdSql = GetPreCommand(strSql, parameters, "SQL"); //返回DataTable对象
daSql.SelectCommand = cmdSql;
daSql.Fill(dtSql);
return dtSql;
} /// <summary>
/// 不带预处理的返回DataSet对象
/// </summary>
/// <param name="strSql"></param>
/// <param name="strTableName"></param>
/// <returns></returns>
public override System.Data.DataSet ExecQueryForDataSet(string strSql,string strTableName)
{
//初始化一个DataSet对象,一个DataAdapter对象
System.Data.DataSet dsSql = new DataSet();
System.Data.SqlClient.SqlDataAdapter daSql = new SqlDataAdapter(strSql,conn); //初始化一个command对象
SqlCommand cmdSql = conn.CreateCommand();
cmdSql.CommandText = strSql; //判断是否在事务中
if(this.bInTrans)
{
cmdSql.Transaction = this.trans;
}
//返回DataSet对象
daSql.SelectCommand = cmdSql;
daSql.Fill(dsSql,strTableName);
return dsSql;
}
/// <summary>
/// 不带预处理的返回DataReader对象
/// </summary>
/// <param name="strSql"></param>
/// <returns></returns>
public override System.Data.IDataReader ExecQueryForDataReader(string strSql)
{
SqlCommand cmdSql = null;
//初始化一个command对象
cmdSql = conn.CreateCommand();
cmdSql.CommandText = strSql;
//判断是否在事务中
if(this.bInTrans)
{
cmdSql.Transaction = this.trans;
}
//返回DataReader对象
return cmdSql.ExecuteReader();
}
/// <summary>
/// 不带预处理的返回DataTable对象
/// </summary>
/// <param name="strSql"></param>
/// <returns></returns>
public override System.Data.DataTable ExecQueryForDataTable(string strSql)
{
//初始化一个DataAdapter对象,一个DataTable对象
System.Data.DataTable dtSql = new DataTable();
System.Data.SqlClient.SqlDataAdapter daSql = new SqlDataAdapter(strSql,conn); //初始化一个command对象
SqlCommand cmdSql = conn.CreateCommand();
cmdSql.CommandText = strSql; //判断是否在事务中
if(this.bInTrans)
{
cmdSql.Transaction = this.trans;
} //返回DataTable对象
daSql.SelectCommand = cmdSql;
daSql.Fill(dtSql);
return dtSql;
}
#endregion #region 处理存储过程
/// <summary>
/// 不返回结果集的
/// </summary>
/// <param name="strSql"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public override int ExecUpdateProc(string strSql, IDataParameter[] parameters)
{
//初始化一个command对象
SqlCommand cmdSql = GetPreCommand(strSql, parameters, "PROCEDURE");
//判断是否在事务中
if(this.bInTrans)
{
cmdSql.Transaction = this.trans;
} //返回受影响的条数
return cmdSql.ExecuteNonQuery();
} /// <summary>
/// 返回DataSet对象
/// </summary>
/// <param name="strSql"></param>
/// <param name="parameters"></param>
/// <param name="strTableName"></param>
/// <returns></returns>
public override DataSet ExecProcForDataSet(string strSql, IDataParameter[] parameters,string strTableName)
{
//初始化一个DataSet对象,一个DataAdapter对象
System.Data.DataSet dsSql = new DataSet();
System.Data.SqlClient.SqlDataAdapter daSql = new SqlDataAdapter(strSql,conn); //初始化一个command对象
SqlCommand cmdSql = GetPreCommand(strSql, parameters, "PROCEDURE"); //返回DataSet对象
daSql.SelectCommand = cmdSql;
daSql.Fill(dsSql,strTableName);
return dsSql;
} /// <summary>
/// 返回DataReader
/// </summary>
/// <param name="strSql"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public override IDataReader ExecProcForDataReader(string strSql, IDataParameter[] parameters)
{
//初始化一个command对象
SqlCommand cmdSql = GetPreCommand(strSql, parameters, "PROCEDURE");
//返回DataReader对象
return cmdSql.ExecuteReader();
} /// <summary>
/// 返回DataTable
/// </summary>
/// <param name="strSql"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public override DataTable ExecProcForDataTable(string strSql, IDataParameter[] parameters)
{
//初始化一个DataAdapter对象,一个DataTable对象
System.Data.DataTable dtSql = new DataTable();
System.Data.SqlClient.SqlDataAdapter daSql = new SqlDataAdapter(strSql,conn); //初始化一个command对象
SqlCommand cmdSql = GetPreCommand(strSql, parameters, "PROCEDURE"); //返回DataTable对象
daSql.SelectCommand = cmdSql;
daSql.Fill(dtSql);
return dtSql;
}
#endregion }
}
[email protected]
http://www.microsoft.com/china/MSDN/library/EnterpriseDevelopment/BuildDistApp/Vsdnbdadaab_rm.mspx用这个吧,很强的,强烈推荐...........
http://blyct.cnblogs.com/articles/293820.html
http://singlepine.cnblogs.com/articles/266538.html