.net中读取XML的ORACLE类

using System;
using System.Xml;
using System.Collections;
using System.Data.OracleClient;
using System.Data;
using System.Windows.Forms;

namespace LegendNet.Common.Oracle
{
 /// <summary>
 /// Connection 的摘要说明。
 /// </summary>
 public  class OracleHelper
 {

  private string dataSource;
  private string username;
  private string password;
  private string dialect;
  public int myNowpage;
  public int formSelect=-1;
  
  #region 构造函数
  /// <summary>
  /// 主动给定配置信息
  /// </summary>
  public OracleHelper(string dataSource,string username,string password,string dialect)
  {
   this.dataSource=dataSource;
   this.username=username;
   this.password=password;
   this.dialect=dialect;
  }
  /// <summary>
  /// 从系统目录里自动获取LegendNetCommonOracle.xml文件
  /// </summary>
  public OracleHelper()
  {
   string configFilePath=System.AppDomain.CurrentDomain.BaseDirectory+"config/LegendNetCommonOracle.xml";
   this.CheckConfig(configFilePath);
  }

  public OracleHelper(string configFilePath)
  {
   this.CheckConfig(configFilePath);
  }
  /// <summary>
  /// 指定文件路径获取配置信息
  /// </summary>
  private void CheckConfig(string filePath)
  {
   try
   {
    XmlDocument _xd=new XmlDocument();
    _xd.Load(filePath);
    XmlElement root=_xd.DocumentElement;
    XmlNodeList _xnl=root.GetElementsByTagName("db_cfg");

    IEnumerator ienum = _xnl.GetEnumerator();
    ienum.MoveNext();
    ienum=((XmlNode)ienum.Current).ChildNodes.GetEnumerator();
    while(ienum.MoveNext())
    { 
     XmlNode title = (XmlNode) ienum.Current;
     switch(title.Name)
     {
      case "data_source":
      {
       this.dataSource=title.InnerText;
       break;
      }
      case "username":
      {
       this.username=title.InnerText;
       break;
      }
      case "password":
      {
       this.password=title.InnerText;
       break;
      }
      case "dialect":
      {
       this.dialect=title.InnerText;
       break;
      }
     }
    }
   }
   catch(Exception e)
   {
    throw new Exception("加载数据库配置文件出错,错误 "+e.Message);
   }
  }
  #endregion
  #region 基本属性
  public string DataSource
  {
   get{return this.dataSource;}
   set{this.dataSource=value;}
  }
  public string Username
  {
   get{return this.username;}
   set{this.username=value;}
  }
  public string Password
  {
   get{return this.password;}
   set{this.password=value;}
  }
  public string Dialect
  {
   get{return this.dialect;}
   set{this.dialect=value;}
  }

  #endregion 
  
  /// <summary>
  /// 返回系统配置的数据库连接,最好能把数据库底层屏蔽掉
  /// 目前只有oracle所以目前只处理oracle
  /// </summary>
  public OracleConnection getDbConn()
  {
   try
   {
    OracleConnection oConn=new OracleConnection();
    oConn.ConnectionString=this.toOracleString();
    return oConn;
   }
   catch(System.Data.OracleClient.OracleException e)
   {
    throw new Exception("不能连接到数据库 错误代码"+e.Code+" 错误信息"+e.Message);
   }
   catch(Exception e)
   {
    throw new Exception("不能连接到数据库 "+e.Message);
   }
   
  }
  
  
  /// <summary>
  /// 返回自定义数据库连接
  /// </summary>
  public OracleConnection getMyDbConn(String url)
  {
   OracleConnection oConn=new OracleConnection();
   oConn.ConnectionString=url;
   return oConn;
  }

  /// <summary>
  /// 返回系统配置信息
  /// </summary>
  public string toOracleString()
  {
   string url="";
   if(dataSource==null||dataSource=="")
   {
    throw new Exception("没有指定数据源!");
   }
   if(username==null||username=="")
   {
    throw new Exception("没有用户名");
   }
   if(password==null||password=="")
   {
    throw new Exception("没有密码");
   }
   url="Data Source="+this.dataSource+";User Id="+this.username+";Password="+this.password;
//   url="Data Source=song;User Id=kaka;Password=kaka";
   return url;
  } 
  public  OracleCommand  GetCommand(string Sql)
  {
   OracleConnection myConn1=this.getDbConn();
   OracleCommand myCmd=new OracleCommand(Sql,myConn1);
   try
   {
    myConn1.Open();
    return myCmd;
   }
   catch(Exception ex)
   {
    throw new Exception(ex.ToString());
   }
   finally
   {
    //myConn1.Close();
    //myConn1.Dispose();
   }
  }
  //返回sql语句的结果集
  public DataSet GetDataSet(string Sql,string TableName)
  {
   OracleConnection myConn=this.getDbConn();
   OracleDataAdapter myDa=new OracleDataAdapter(Sql,myConn);
   DataSet myDs=new DataSet();
   try
   {
    myConn.Open();
    myDs.Clear();
    myDa.Fill(myDs,TableName);
   }
   catch(Exception ex)
   {
    throw new Exception(ex.ToString());
   }
   finally
   {
    myConn.Close();
    myConn.Dispose();
    myDa.Dispose();
   }
   return myDs;
  }

  public void DoSql(string Sql,string TableName)
  {
   OracleConnection myConn1=this.getDbConn();
   OracleCommand myCmd=new OracleCommand(Sql,myConn1);
   try
   {
    myConn1.Open();
    myCmd.ExecuteNonQuery();
   }
   catch(Exception ex)
   {
    throw new Exception(ex.ToString());
   }
   finally
   {
    myConn1.Close();
    myConn1.Dispose();
   }
  }
  public void DoParameters(ArrayList pList)
  {
   OracleConnection myConn=new OracleConnection();
   OracleCommand myCmd=new OracleCommand("aa",myConn);//aa为存储过程名
   myCmd.CommandType=CommandType.StoredProcedure;
  }
  

  public int GetCount(string tableName,string myROLE_ID,string myPERMISSION_ID,string myAREA_ID)
  {
   int nCount = -1;
   string Sql="select count(*) as tt ";
   Sql+="from "+tableName;
   Sql+=" where ROLE_ID='"+ myROLE_ID +"'and PERMISSION_ID='"+ myPERMISSION_ID +"' and AREA_ID='"+ myAREA_ID +"'";
   OracleConnection myConn2=this.getDbConn();
   OracleCommand myCmd=new OracleCommand(Sql,myConn2);
   myConn2.Open();
   OracleDataReader myReader=myCmd.ExecuteReader();
   try
   {
    myReader.Read();
    nCount=Convert.ToInt32(myReader["tt"]);
   }
   catch(Exception ex)
   {
    throw new Exception(ex.ToString());
   }
   finally
   {
    myReader.Close();
    myConn2.Close();
    myConn2.Dispose();
   }
   return nCount;

  }
  /// <summary>
  /// 绑定数据源
  /// </summary>
  /// <param name="sql"></param>
  /// <param name="tableName"></param>
  /// <param name="dataGrid"></param>
  /// <param name="needBindHead">是否需要绑定列头</param>
  /// <param name="columnName"></param>
  public DataSet BindDataGrid(string sql,string tableName,DataGrid dataGrid,bool needBindHead,string[] columnName)
  {
   if(dataGrid==null)
   {
    throw new Exception("DataGrid为空");
   }
   DataSet dataSet=this.GetDataSet(sql,tableName);
   
   System.Data.DataTable dataTable =dataSet.Tables[0];

   for(int i=0;i<columnName.Length;i++)
   {
    dataTable.Columns[i].ColumnName=columnName[i];
   }

   dataGrid.DataSource=dataTable;

   DataGridTableStyle ts=new DataGridTableStyle();
   ts.MappingName=tableName;
   for(int i=0;i<columnName.Length;i++)
   {
    
    DataGridColumnStyle tbc=new DataGridTextBoxColumn();
    tbc.HeaderText=columnName[i].ToString().Trim();
    tbc.MappingName=columnName[i].ToString().Trim();
       tbc.Width=dataGrid.Width/columnName.Length;
    tbc.Alignment=System.Windows.Forms.HorizontalAlignment.Left;
    ts.GridColumnStyles.Add(tbc);
    if(this.formSelect==0)
     ts.RowHeadersVisible=false;
   }
   dataGrid.TableStyles.Clear();
   dataGrid.TableStyles.Add(ts);
  
   dataGrid.Refresh();  
   return dataSet;
  }
  public DataSet GetDataSetByPage(string Sql,string TableName)
  {
   OracleConnection myConn=this.getDbConn();
   OracleDataAdapter myDa=new OracleDataAdapter(Sql,myConn);
   DataSet myDs=new DataSet();
   try
   {
    myConn.Open();
    myDs.Clear();
    int pagesize=20;
    int start=pagesize*(myNowpage-1);
    myDa.Fill(myDs,start,pagesize,TableName);
   }
   catch(Exception ex)
   {
    throw new Exception(ex.ToString());
   }
   finally
   {
    myConn.Close();
    myConn.Dispose();
    myDa.Dispose();
   }
   return myDs;
  }
  public int GetPageCount(string Sql,string TableName)
  {
   int pageCount;
   OracleConnection myConn=this.getDbConn();
   OracleDataAdapter myDa=new OracleDataAdapter(Sql,myConn);
   DataSet myDs=new DataSet();
   try
   {
    myConn.Open();
    myDs.Clear();
    myDa.Fill(myDs,TableName);
    int rowcount=myDs.Tables[0].Rows.Count;
    int n=rowcount/20;
    if(rowcount==20*n)
    {
     pageCount=n;
    }
    else
    {
     pageCount=n+1;
    }
   }
   catch(Exception ex)
   {
    throw new Exception(ex.ToString());
   }
   finally
   {
    myConn.Close();
    myConn.Dispose();
    myDa.Dispose();
   }
   return pageCount;
  }
  public DataSet myBindDataGrid(string sql,string tableName,DataGrid dataGrid,bool needBindHead,string[] columnName)
  {
   if(dataGrid==null)
   {
    throw new Exception("DataGrid为空");
   }
   DataSet dataSet=this.GetDataSetByPage(sql,tableName);
   
   System.Data.DataTable dataTable =dataSet.Tables[0];

   for(int i=0;i<columnName.Length;i++)
   {
    dataTable.Columns[i].ColumnName=columnName[i];
   }

   dataGrid.DataSource=dataTable;

   DataGridTableStyle ts=new DataGridTableStyle();
   ts.MappingName=tableName;

   for(int i=0;i<columnName.Length;i++)
   {
    DataGridColumnStyle tbc=new DataGridTextBoxColumn();
    if(columnName[i].ToString().Trim()=="ID")
    {
     tbc.Width=-1;
     ts.GridColumnStyles.Add(tbc);
    }
    else
    {
     tbc.MappingName=columnName[i].ToString().Trim();
     tbc.Alignment=System.Windows.Forms.HorizontalAlignment.Left;
     tbc.NullText="";
     tbc.HeaderText=columnName[i].ToString().Trim();
     if(this.formSelect==0)
      tbc.Width=(dataGrid.Width/columnName.Length)+20;
     else if(this.formSelect==1)
      tbc.Width=(dataGrid.Width/columnName.Length)+80;
     ts.GridColumnStyles.Add(tbc);
     ts.RowHeadersVisible=false;
    }
   }
   dataGrid.TableStyles.Clear();
   dataGrid.TableStyles.Add(ts);
      
   dataGrid.Refresh();  
   return dataSet;
  }

 }
  
 
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值