1. 程式人生 > >用C# 來操作ORACLE 資料庫

用C# 來操作ORACLE 資料庫

   /// <summary>
   /// 執行SQL語句,返回影響的記錄數
   /// </summary>
   /// <param name="SQLString">SQL語句</param>
   /// <returns>影響的記錄數</returns>
   public static int ExecuteSql(string SQLString)
   {
    using (OracleConnection connection = new OracleConnection(connectionString))
    {    
     using (OracleCommand cmd = new OracleCommand(SQLString,connection))
     {
      try
      {  
       connection.Open();
       int rows=cmd.ExecuteNonQuery();
       return rows;
      }
      catch(System.Data.OracleClient.OracleException E)
      {     
       connection.Close();
       throw new Exception(E.Message);
      }
     }    
    }
   }
  
   /// <summary>
   /// 執行多條SQL語句,實現資料庫事務。
   /// </summary>
   /// <param name="SQLStringList">多條SQL語句</param>  
   public static void ExecuteSqlTran(ArrayList SQLStringList)
   {
    using (OracleConnection conn = new OracleConnection(connectionString))
    {
     conn.Open();
     OracleCommand cmd = new OracleCommand();
     cmd.Connection=conn;    
     OracleTransaction tx=conn.BeginTransaction();   
     cmd.Transaction=tx;    
     try
     {     
      for(int n=0;n<SQLStringList.Count;n++)
      {
       string strsql=SQLStringList[n].ToString();
       if (strsql.Trim().Length>1)
       {
        cmd.CommandText=strsql;
        cmd.ExecuteNonQuery();
       }
      }          
      tx.Commit();     
     }
     catch(System.Data.OracleClient.OracleException E)
     {  
      tx.Rollback();
      throw new Exception(E.Message);
     }
    }
   }
   /// <summary>
   /// 執行帶一個儲存過程引數的的SQL語句。
   /// </summary>
   /// <param name="SQLString">SQL語句</param>
   /// <param name="content">引數內容,比如一個欄位是格式複雜的文章,有特殊符號,可以通過這個方式新增</param>
   /// <returns>影響的記錄數</returns>
   public static int ExecuteSql(string SQLString,string content)
   {    
    using (OracleConnection connection = new OracleConnection(connectionString))
    {
     OracleCommand cmd = new OracleCommand(SQLString,connection);  
     System.Data.OracleClient.OracleParameter   myParameter = new System.Data.OracleClient.OracleParameter ( "@content", OracleDbType.NText);
     myParameter.Value = content ;
     cmd.Parameters.Add(myParameter);
     try
     {
      connection.Open();
      int rows=cmd.ExecuteNonQuery();
      return rows;
     }
     catch(System.Data.OracleClient.OracleException E)
     {    
      throw new Exception(E.Message);
     }
     finally
     {
      cmd.Dispose();
      connection.Close();
     }
    }
   }  
   /// <summary>
   /// 向資料庫裡插入影象格式的欄位(和上面情況類似的另一種例項)
   /// </summary>
   /// <param name="strSQL">SQL語句</param>
   /// <param name="fs">影象位元組,資料庫的欄位型別為image的情況</param>
   /// <returns>影響的記錄數</returns>
   public static int ExecuteSqlInsertImg(string strSQL,byte[] fs)
   {  
    using (OracleConnection connection = new OracleConnection(connectionString))
    {
     OracleCommand cmd = new OracleCommand(strSQL,connection);
     System.Data.OracleClient.OracleParameter   myParameter = new System.Data.OracleClient.OracleParameter ( "@fs", OracleDbType.Image);
     myParameter.Value = fs ;
     cmd.Parameters.Add(myParameter);
     try
     {
      connection.Open();
      int rows=cmd.ExecuteNonQuery();
      return rows;
     }
     catch(System.Data.OracleClient.OracleException E)
     {    
      throw new Exception(E.Message);
     }
     finally
     {
      cmd.Dispose();
      connection.Close();
     }    
    }
   }
  
   /// <summary>
   /// 執行一條計算查詢結果語句,返回查詢結果(object)。
   /// </summary>
   /// <param name="SQLString">計算查詢結果語句</param>
   /// <returns>查詢結果(object)</returns>
   public static object GetSingle(string SQLString)
   {
    using (OracleConnection connection = new OracleConnection(connectionString))
    {
     using(OracleCommand cmd = new OracleCommand(SQLString,connection))
     {
      try
      {
       connection.Open();
       object obj = cmd.ExecuteScalar();
       if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))
       {     
        return null;
       }
       else
       {
        return obj;
       }    
      }
      catch(System.Data.OracleClient.OracleException e)
      {      
       connection.Close();
       throw new Exception(e.Message);
      }
     }
    }
   }
   /// <summary>
   /// 執行查詢語句,返回OracleDataReader
   /// </summary>
   /// <param name="strSQL">查詢語句</param>
   /// <returns>OracleDataReader</returns>
   public static OracleDataReader ExecuteReader(string strSQL)
   {
    OracleConnection connection = new OracleConnection(connectionString);   
    OracleCommand cmd = new OracleCommand(strSQL,connection);    
    try
    {
     connection.Open();
     OracleDataReader myReader = cmd.ExecuteReader();
     return myReader;
    }
    catch(System.Data.OracleClient.OracleException e)
    {        
     throw new Exception(e.Message);
    }   
   
   }  
   /// <summary>
   /// 執行查詢語句,返回DataSet
   /// </summary>
   /// <param name="SQLString">查詢語句</param>
   /// <returns>DataSet</returns>
   public static DataSet Query(string SQLString)
   {
    using (OracleConnection connection = new OracleConnection(connectionString))
    {
     DataSet ds = new DataSet();
     try
     {
      connection.Open();
      OracleDataAdapter command = new OracleDataAdapter(SQLString,connection);    
      command.Fill(ds,"ds");
     }
     catch(System.Data.OracleClient.OracleException ex)
     {    
      throw new Exception(ex.Message);
     }   
     return ds;
    }   
   }