/// <summary>
/// 文件名称:SqlDataUpdater.cs
/// 摘 要:SQL数据更新器,可方便对单数据表进行读,写,删操作,构造函数按引用传出结果集.
/// SqlDataUpdater du = new SqlDataUpdater(sqlHere,ref yourDataSet)
/// 调用Update(ds)更新数据,自动事务处理,出错信息存在 ErrorMessage.
///
/// 完成日期:2005-4-21
/// 作 者:魏孙鼎
/// 当前版本:1.0
/// </summary>
public class SqlDataUpdater
{
private SqlConnection cn;
private SqlCommand cmd;
private SqlDataAdapter da;
private SqlTransaction tran;
private SqlCommandBuilder cmdBuilder;
private string err;
public string ErrorMessage
{
get
{
return err;
}
}
/// <summary>
/// 初始化数据更新器
/// </summary>
/// <param name="sql">用于返回schema的SQL</param>
/// <param name="dataSet">按引用传递的数据集</param>
public SqlDataUpdater(string sql,ref DataSet dataSet)
{
err = "";
if (dataSet == null) dataSet = new DataSet();
cn = new SqlConnection(ZMarketData.DataSetting.ConnectionString);
cmd = new SqlCommand(sql,cn);
da = new SqlDataAdapter(cmd);
cmdBuilder = new SqlCommandBuilder(da);
da.Fill(dataSet);
}
public bool Update(DataSet ds)
{
bool success = false;
cn.Open();
tran = cn.BeginTransaction();
cmd.Transaction = tran;
try
{
if(ds.GetChanges() != null)
{
da.Update(ds.GetChanges());
}
success = true;
tran.Commit();
}
catch(Exception ex)
{
tran.Rollback();
err = ex.Message;
success = false;
}
return success;
}
~SqlDataUpdater()
{
da.Dispose();
cmd.Dispose();
cn.Dispose();
}
}
// 应用示例
DataSet ds = new DataSet();
SqlDataUpdater du = new SqlDataUpdater("select * from Public_Feedback where 1=2",ref ds);
DataRow dr = ds.Tables[0].NewRow();
dr["CreateDate"] = DateTime.Now;
dr["FirstName"] = Request["txtName"];
dr["CompanyName"] = Request["txtCompany"];
dr["Email"] = Request["txtEmail"];
ds.Tables[0].Rows.Add(dr);
if (du.Update(ds))
{
//成功
}
else
{
Response.Write(du.ErrorMessage);
}