public class DBHelper
{
    //属性:数据库链接对象
    private static SqlConnection conn;
    public static SqlConnection Conn
    {
        get
        {
         //   string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; ///////// connstr 更据实际情况更改
            string connstr = ConfigurationSettings.AppSettings["DataBase"]; 
            if (conn == null)
                conn = new SqlConnection(connstr);
            if (conn.State == ConnectionState.Closed)
                conn.Open();
            if (conn.State == ConnectionState.Broken)
            {
                conn.Close();
                conn.Open();
            }
            return conn;
        }
    }


    //方法:查询,DataReader
    public static SqlDataReader GetReader(string SqlStr)
    {
        SqlCommand cmd = new SqlCommand(SqlStr, Conn);
        return cmd.ExecuteReader();
    }

    public static SqlDataReader GetReader(string SqlStr, SqlParameter[] paras)
    {
        SqlCommand cmd = new SqlCommand(SqlStr, Conn);
        cmd.Parameters.AddRange(paras);
        return cmd.ExecuteReader();
    }


    //查询:DataTable
    public static DataTable GetTable(string SqlStr)
    {
        SqlDataAdapter dap = new SqlDataAdapter(SqlStr, Conn);
        DataSet ds = new DataSet();
        dap.Fill(ds);
        conn.Close();
        return ds.Tables[0];

    }

    //增删改
    public static bool Execute(string SqlStr)
    {
        SqlCommand cmd = new SqlCommand(SqlStr, Conn);
        int result = cmd.ExecuteNonQuery();
        conn.Close();
        return result > 0;
    }

    //返回首行首列
    public static object GetScalar(string SqlStr)
    {
        SqlCommand cmd = new SqlCommand(SqlStr, Conn);
        object obj = cmd.ExecuteScalar();
        conn.Close();
        return obj;
    }
}

----------------------------------------------------------
///////////////下面的类执行存储过程
----------------------------------------------------------

 public class execProc
 {
  string ProcName ="";
  SqlParameter[] SqlParameter = null;
  string DBName = "";
  
        /// <summary>
        ///存储过程构造函数
        /// </summary>
        /// <param name="procName">名称</param>
        /// <param name="sqlParameter">参数</param>
        /// <param name="dbName">数据库名</param>
  public execProc(string procName,SqlParameter[] sqlParameter,string dbName)
  {
   this.ProcName = procName;
   this.SqlParameter = sqlParameter;
   this.DBName = dbName;
  }


  /// 构建 SqlCommand 对象
  private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
  {
   SqlCommand command = new SqlCommand(storedProcName, connection);
   command.CommandType = CommandType.StoredProcedure;
   foreach (SqlParameter parameter in parameters)
   {
    if (parameter != null)
    {
     // 检查未分配值的输出参数,将其分配以DBNull.Value.
     if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
      (parameter.Value == null))
     {
      parameter.Value = DBNull.Value;
     }
     command.Parameters.Add(parameter);
    }
   }

   return command;
  }


  /// <summary>
  /// 执行存储过程返回DATATABLE
  /// </summary>
  /// <returns></returns>
  public  DataTable ExecProcReturnDatatable()
  {
  
   SqlConnection con= new SqlConnection();
   SqlDataAdapter da=new SqlDataAdapter();
   DataSet ds=new DataSet();
   DataTable dt = new DataTable();
            con = DBHelper.Conn;  //调用DBHELPER的东西

   SqlCommand command = BuildQueryCommand(con, ProcName, SqlParameter);
   //建立数据池
   da = new SqlDataAdapter(command);
   try
   {
    command.ExecuteNonQuery();
    ds = new DataSet();
    da.Fill(ds);
    dt = ds.Tables[0];
    int i = dt.Rows.Count;
   }
   catch(Exception ex)
   {
    return null;
   }
   finally
   {
    con.Close();
    command.Dispose();
    con.Dispose();
   }
   
   return dt;

  }
 }

 

posted on 2009-08-29 00:20  wsenmin  阅读(635)  评论(0编辑  收藏  举报