分享

0724:Oracle数据库处理类 - LiMac的编程阶梯 - DonewsBlog

 昵称14326 2006-11-21

using System;
using System.Data;
using System.Data.OracleClient;

namespace SUEM.WebModule.Data
{
 public class OracleDB: IDisposable
 {
  private OracleConnection con=null;
  private OracleTransaction trans=null;
  public OracleDB() {  }
  private OracleCommand CreateCommand(string procName,OracleParameter[] paras)
  {
   if(con==null)
   {
    Open();
   }
   OracleCommand cmd=new OracleCommand(procName,con);
   cmd.Transaction=trans;
   cmd.CommandType=CommandType.StoredProcedure;
   if(paras!=null)
   {
    foreach(OracleParameter parameter in paras)  cmd.Parameters.Add(parameter);
   }
   cmd.Parameters.Add(new OracleParameter("ReturnValue",OracleType.Int32,4,ParameterDirection.ReturnValue,false,0,0,string.Empty,DataRowVersion.Default,null));
   return cmd;
  }
  private OracleCommand CreateOracleCommand(string Sql,string[] paras)
  {
   if(con==null)
   {
    Open();
   }
   int index,position;
   index=-1; position=0;
   String newsql=Sql;
   index=Sql.IndexOf(":?");
   while(index!=1 && position<=paras.Length)
   {
    string temp=newsql;
    newsql=newsql.Substring(0,index);
    string para=paras[position].ToString();
    newsql=newsql+para+temp.Substring(index+2);
    index=newsql.IndexOf(":?");
    position++;
   }
   OracleCommand cmd=new OracleCommand(newsql,con);
   cmd.Transaction=trans;
   cmd.CommandType=CommandType.Text;
   return cmd;
  }
  private OracleDataAdapter CreateOracleDataAdapter(string Sql,string[] paras)
  {
   if(con==null)
   {
    Open();
   }
   int index,position;
   index=-1; position=0;
   string newsql=Sql;
   index=Sql.IndexOf(":?");
   while(index!=-1 && position<=paras.Length)
   {
    string temp=newsql;
    newsql=newsql.Substring(0,index);
    string para=paras[position].ToString();
    newsql=newsql+para+temp.Substring(index+2);
    index=newsql.IndexOf(":?");
    position++;
   }
   OracleDataAdapter cmd=new OracleDataAdapter(newsql,con);
   cmd.SelectCommand.CommandType=CommandType.Text;
   return cmd;
  }
  private OracleDataAdapter CreateDataAdapter(string procName,OracleParameter[] paras)
  {
   if(con==null)
   {
    Open();
   }
   OracleDataAdapter cmd=new OracleDataAdapter(procName,con);
   cmd.SelectCommand.CommandType=CommandType.StoredProcedure;
   if(paras!=null)
   {
    foreach(OracleParameter parameter in paras) cmd.SelectCommand.Parameters.Add(parameter);
   }
   cmd.SelectCommand.Parameters.Add(new OracleParameter("ReturnValue",OracleType.Int32,4,ParameterDirection.ReturnValue,false,0,0,string.Empty,DataRowVersion.Default,null));
   return cmd;
  }
  public int RunSql(string Sql)
  {
   OracleCommand cmd=CreateOracleCommand(Sql,null);
   try
   {
    cmd.ExecuteNonQuery();
    return 1;
   }
   catch
   {
    return 0;
   }
   finally
   {
    Close();
   }
  }
  public int RunSql(string Sql,string[] paras)
  {
   OracleCommand cmd=CreateOracleCommand(Sql,paras);
   try
   {
    cmd.ExecuteNonQuery();
    return 1;
   }
   catch
   {
    return 0;
   }
   finally
   {
    Close();
   }
  }
  public void RunSql(string Sql,out OracleDataReader dataReader)
  {
   OracleCommand cmd=CreateOracleCommand(Sql,null);
   OracleDataReader dr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
   dataReader=dr;
  }
  public void RunSql(string Sql,String[] paras,out OracleDataReader dataReader)
  {
   OracleCommand cmd=CreateOracleCommand(Sql,paras);
   dataReader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
  }
  public void RunSql(string Sql,string tableName,out DataSet dsReturn)
  {
   DataSet ds=new DataSet();
   OracleDataAdapter cmd=CreateOracleDataAdapter(Sql,null);
   if(tableName!=null && tableName.Trim()!="")
   {
    cmd.Fill(ds,tableName);
   }
   else
   {
    cmd.Fill(ds);
   }
   dsReturn=ds;
   Close();
  }
  public void RunSql(string Sql,string[] paras,string tableName,out DataSet dsReturn)
  {
   DataSet ds=new DataSet();
   OracleDataAdapter cmd=CreateOracleDataAdapter(Sql,paras);
   if(tableName!=null && tableName.Trim()!="")
   {
    cmd.Fill(ds,tableName);
   }
   else
   {
    cmd.Fill(ds);
   }
   dsReturn=ds;
   Close();
  }
  public int RunXml(string KeyValue)
  {
   string sql=System.Configuration.ConfigurationSettings.AppSettings[KeyValue];
   return RunSql(sql);
  }
  public int RunXml(string KeyValue,String[] paras)
  {
   string sql=System.Configuration.ConfigurationSettings.AppSettings[KeyValue];
   return RunSql(sql,paras);
  }
  public void RunXml(string KeyValue,out OracleDataReader dataReader)
  {
   string sql=System.Configuration.ConfigurationSettings.AppSettings[KeyValue];
   OracleDataReader dr;
   RunSql(sql,out dr);
   dataReader=dr;
  }
  public void RunXml(string KeyValue,string[] paras,out OracleDataReader dataReader)
  {
   string sql=System.Configuration.ConfigurationSettings.AppSettings[KeyValue];
   OracleDataReader dr;
   RunSql(sql,paras,out dr);
   dataReader=dr;
  }
  public void RunXml(string KeyValue,string[] paras,string tableName,out DataSet dsReturn)
  {
   string sql=System.Configuration.ConfigurationSettings.AppSettings[KeyValue];
   DataSet ds=new DataSet();
   RunSql(sql,paras,tableName,out ds);
   dsReturn=ds;
  }
  public int RunProc(string procName)
  {
   OracleCommand cmd=CreateCommand(procName,null);
   cmd.ExecuteNonQuery();
   Close();
   return (int)cmd.Parameters["ReturnValue"].Value;
  }
  public int RunProc(string procName,OracleParameter[] paras)
  {
   OracleCommand cmd=CreateCommand(procName,paras);
   cmd.ExecuteNonQuery();
   int i=(int)cmd.Parameters["ReturnValue"].Value;
   cmd.Parameters.Clear();
   Close();
   return i;
  }
  public int RunProcTrans(string procName,OracleParameter[] paras)
  {
   OracleCommand cmd=CreateCommand(procName,paras);
   cmd.ExecuteNonQuery();
   int i=(int)cmd.Parameters["ReturnValue"].Value;
   cmd.Parameters.Clear();
   return i;
  }
  public void RunProc(string procName,out OracleDataReader dataReader)
  {
   OracleCommand cmd=CreateCommand(procName,null);
   dataReader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
   cmd.Parameters.Clear();
  }
  public void RunProc(string procName,OracleParameter[] paras,out OracleDataReader dataReader)
  {
   OracleCommand cmd=CreateCommand(procName,paras);
   dataReader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
   cmd.Parameters.Clear();
  }
  public int RunProc(string procName,OracleParameter[] paras,string tableName,out DataSet dsReturn)
  {
   DataSet ds=new DataSet();
   OracleDataAdapter cmd=CreateDataAdapter(procName,paras);
   if(tableName!=null && tableName.Trim()!="")
   {
    cmd.Fill(ds,tableName);
   }
   else
   {
    cmd.Fill(ds);
   }
   dsReturn=ds;
   int Ret=(int)cmd.SelectCommand.Parameters["ReturnValue"].Value;
   cmd.SelectCommand.Parameters.Clear();
   Close();
   return Ret;
  }
  public OracleConnection GetConnection()
  {
   return con;
  }
  public OracleParameter MakeParam(string paramName,OracleType dbType,Int32 size,ParameterDirection direction,object val)
  {
   OracleParameter param;
   if(size>0)
   {
    param=new OracleParameter(paramName,dbType,size);
   }
   else
   {
    param=new OracleParameter(paramName,dbType);
   }
   param.Direction=direction;
   if(!(direction==ParameterDirection.Output && val==null))
   {
    param.Value=val;
   }
   return param;
  }
  public OracleParameter MakeInParam(string paramName,OracleType dbType,int size,object val)
  {
   return MakeParam(paramName,dbType,size,ParameterDirection.Input,val);
  }
  public OracleParameter MakeOutParam(string paramName,OracleType dbType,int size)
  {
   return MakeParam(paramName,dbType,size,ParameterDirection.Output,null);
  }
  public void Open()
  {
   if(con==null)
   {
    con=new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["ConStr"]);
    con.Open();
   }
  }
  public void Open(string ConStr)
  {
   if(con==null)
   {
    con=new OracleConnection(ConStr);
    con.Open();
   }
  }
  public void Close()
  {
   if(con!=null)
   {
    con.Close();
    con=null;
   }
  }
  public void Dispose()
  {
   if(con!=null)
   {
    con.Dispose();
    con=null;
   }
  }
  public void BeginTrans()
  {
   if(con==null)
   {
    Open();
   }
   trans=con.BeginTransaction();
  }
  public void CommitTrans()
  {
   if(trans!=null)
   {
    trans.Commit();
    con.Close();
   }
  }
  public void RollBack()
  {
   if(trans!=null)
   {
    trans.Rollback();
    con.Close();
   }
  }
 }
}


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约