博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数据库访问(二)

Posted on 2005-12-29 19:39  欧阳另类  阅读(162)  评论(0)    收藏  举报

 

//***************************************************************
//*     
//*   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, 
false00,
                
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();
            }

        }




    }

}

执行类