//***************************************************************
//*
//* Project Name: Alawn
//* Module Name: Database
//* Author: Alawn
//* Create Date: 2005-12-29
//* Description:
//*
//***************************************************************
namespace Alawn.ClassLibrary.Database
{
/// <summary>
/// DataBase 数据访问执行类,通用的数据库处理类,通过ado.net与数据库连接
/// </summary>
using System;
using System.Data;
using System.Data.SqlClient ;
public class DataBase : BasicClass
{
public DataBase()
{
}
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程的名称</param>
/// <returns>返回存储过程返回值</returns>
public int RunProc(string procName)
{
this.m_oCommad = CreateCommand(procName, null);
try
{
this.m_oCommad .ExecuteNonQuery();
}
finally
{
this.Close();
}
return (int)this.m_oCommad.Parameters["ReturnValue"].Value;
}

/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程名称</param>
/// <param name="prams">存储过程所需参数</param>
/// <returns>返回存储过程返回值</returns>
public int RunProc(string procName, SqlParameter[] prams)
{
m_oCommad = CreateCommand(procName, prams);
try
{
m_oCommad.ExecuteNonQuery();
}
finally
{
this.Close();
}
return (int)m_oCommad.Parameters["ReturnValue"].Value;
}

/// <summary>
/// 创建一个SqlCommand对象以此来执行存储过程
/// </summary>
/// <param name="procName">存储过程的名称</param>
/// <param name="prams">存储过程所需参数</param>
/// <returns>返回SqlCommand对象</returns>
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
// 确认打开连接
this.Open();
SqlCommand com = new SqlCommand(procName, this.m_oConnection);
com.CommandType = CommandType.StoredProcedure;
// 依次把参数传入存储过程
if (prams != null)
{
foreach (SqlParameter parameter in prams)
com.Parameters.Add(parameter);
}
// 加入返回参数
com.Parameters.Add(
new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null));
return com;
}

/// <summary>
/// 通过存储过程,返回数据
/// </summary>
/// <param name="sprocName">存储过程名</param>
/// <returns>表</returns>
protected DataTable GetTable(string sprocName)
{
this.Open();
try
{
m_oCommad.CommandText = sprocName;
m_oCommad.CommandType = CommandType.StoredProcedure;
m_oSqlDataAdapter.SelectCommand = m_oCommad ;
this.m_oSqlDataAdapter.Fill(m_oDataSet);
}
finally
{
//无论语句执行正确与否,都关闭连接释放资源
this.Close();
}
return m_oDataSet.Tables[0];
} 
/// <summary>
/// 通过存储过程和参数返回查询表的信息
/// </summary>
/// <param name="sprocName"></param>
/// <param name="parameters"></param>
/// <returns></returns>
protected DataTable GetTable(string sprocName, SqlParameter[] parameters)
{
this.Open();
try
{
m_oCommad.CommandText = sprocName;
m_oCommad.CommandType = CommandType.StoredProcedure;
SqlParameterCollection sqlParams = m_oCommad.Parameters;
//先清空原有的参数
m_oCommad.Parameters.Clear();
//给Command添加参数
foreach ( SqlParameter parameter in parameters )
{
m_oCommad.Parameters.Add( parameter );
}
m_oSqlDataAdapter.SelectCommand = m_oCommad;
m_oSqlDataAdapter.Fill(m_oDataSet);
}
finally
{
//无论语句执行正确与否,都关闭连接释放资源
this.Close();
}
return m_oDataSet.Tables[0];
}
/// <summary>
/// 通过存储过程及存储过程参数执行对数据库无返回值的操作(如:新增,更新,删除等)
/// </summary>
/// <param name="sprocName">存储过程名称</param>
/// <param name="parameters">存储过程参数</param>
protected void SaveTale(string sprocName, SqlParameter[] parameters)
{
m_oCommad.CommandText = sprocName;
m_oCommad.CommandType = CommandType.StoredProcedure;
SqlParameterCollection sqlParams = m_oCommad.Parameters;
//先清空原有的参数
m_oCommad.Parameters.Clear();
//给Command添加参数
foreach ( SqlParameter parameter in parameters )
{
m_oCommad.Parameters.Add( parameter );
}
//打开连接
this.Open();
try
{
//执行
m_oCommad.ExecuteNonQuery();
}
finally
{
//关闭连接
this.Close();
}
} 
/// <summary>
/// 执行脚本
/// </summary>
/// <param name="strSql">SQL语句</param>
/// <returns>表</returns>
protected System.Data.DataTable ExecuteTable(string strSql)
{
this.Open();
SqlDataAdapter objAdp =new SqlDataAdapter(strSql,this.m_oConnection);
System.Data.DataTable dtRs = new System.Data.DataTable();
try
{
objAdp.Fill(dtRs);
return dtRs;
}
catch
{
return null;
}
finally
{
this.Close();
}
}


}
}
执行类


浙公网安备 33010602011771号