Oracle数据库操作类

我有对Oracle最基本的数据库操作做了最为简单的归类,希望可以对后来者有所参考。另外,这个类需要有日志记录类(日志记录在Xml文档中),我会在后面的文中在贴出来。

 

 

using System;
using System.Data;
using System.Configuration;
using System.Data.OracleClient;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using Transactions;

/// <summary>
/// DB 的摘要说明
/// </summary>
public class MyOraDB
{
    public MyOraDB()
    {

    }

    public int ExcuteSqlWithNoQuery(string vSql)
    {
        int vI = 0;
        OracleConnection vOracleConn = OpenOracleDBConn();
        try
        {

            if (vOracleConn.State != ConnectionState.Open)
            {
                vOracleConn.Open();
            }

            OracleCommand vOracleCmd = new OracleCommand();
            vOracleCmd.Connection = vOracleConn;
            vOracleCmd.CommandText = vSql;
            vOracleCmd.CommandType = CommandType.Text;

            vI = vOracleCmd.ExecuteNonQuery();

        }
        catch (Exception ex)
        {
            MyLog vMyLog = new MyLog();
            vMyLog.WriteLog("MyOraDB", vSql, ex);
            AppMain.OraMsg = ex.Message;
        }
        finally
        {
            CloseOracleDBConn(vOracleConn);
        }

        return vI;
    }
    public int ExcuteSqlWithSingleNum(string vSql)
    {
        int vI = 0;
        OracleConnection vOracleConn = OpenOracleDBConn();
        try
        {
            if (vOracleConn.State != ConnectionState.Open)
            {
                vOracleConn.Open();
            }

            OracleCommand vOracleCommand = new OracleCommand(vSql, vOracleConn);
            OracleDataReader vOracleDataReader = vOracleCommand.ExecuteReader();
            while (vOracleDataReader.Read())
            {
                vI = vOracleDataReader.GetInt32(0);
            }
            vOracleDataReader.Close();
        }
        catch (Exception ex)
        {
            MyLog vMyLog = new MyLog();
            vMyLog.WriteLog("MyOraDB", vSql, ex);
            AppMain.OraMsg = ex.Message;
        }
        finally
        {
            CloseOracleDBConn(vOracleConn);
        }

        return vI;

    }
    public string ExcuteSqlWithSingleString(string vSql)
    {
        StringBuilder vTempStrBld = new StringBuilder();
        OracleConnection vOracleConn = OpenOracleDBConn();
        try
        {
            if (vOracleConn.State != ConnectionState.Open)
            {
                vOracleConn.Open();
            }
            OracleCommand vOracleCommand = new OracleCommand(vSql, vOracleConn);
            OracleDataReader vOracleDataReader = vOracleCommand.ExecuteReader();
            while (vOracleDataReader.Read())
            {
                vTempStrBld.Append(vOracleDataReader.GetString(0));
            }
            vOracleDataReader.Close();
        }
        catch (Exception ex)
        {
            MyLog vMyLog = new MyLog();
            vMyLog.WriteLog("MyOraDB", vSql, ex);
            AppMain.OraMsg = ex.Message;
        }
        finally
        {
            CloseOracleDBConn(vOracleConn);
        }

        return vTempStrBld.ToString();
    }

    public DataTable ExcuteSqlWithDataTable(string vSql)
    {
        DataTable vDataTable = new DataTable();
        OracleConnection vOracleConn = OpenOracleDBConn();

        try
        {
            if (vOracleConn.State != ConnectionState.Open)
            {
                vOracleConn.Open();
            }

            OracleDataAdapter vOracleDataAdapter = new OracleDataAdapter(vSql, vOracleConn);
            vOracleDataAdapter.Fill(vDataTable);
        }
        catch (Exception ex)
        {
            MyLog vMyLog = new MyLog();
            vMyLog.WriteLog("MyOraDB", vSql, ex);
            AppMain.OraMsg = ex.Message;
        }
        finally
        {
            CloseOracleDBConn(vOracleConn);
        }

        return vDataTable;

    }
    public DataSet ExcuteSqlWithDataSet(string vSql)
    {
        DataSet vDataSet = new DataSet();
        OracleConnection vOracleConn = OpenOracleDBConn();

        try
        {
            if (vOracleConn.State != ConnectionState.Open)
            {
                vOracleConn.Open();
            }

            OracleDataAdapter vOracleDataAdapter = new OracleDataAdapter(vSql, vOracleConn);
            vOracleDataAdapter.Fill(vDataSet);
        }
        catch (Exception ex)
        {
            MyLog vMyLog = new MyLog();
            vMyLog.WriteLog("MyOraDB", vSql, ex);
            AppMain.OraMsg = ex.Message;
        }
        finally
        {
            CloseOracleDBConn(vOracleConn);
        }
        return vDataSet;

    }

    public string ExcuteSqlTransactionWithString(string[] vSqlArray)
    {
        int vI = vSqlArray.Length;
        string vSql = string.Empty;

        OracleConnection vOracleConn = OpenOracleDBConn();
        if (vOracleConn.State != ConnectionState.Open)
        {
            vOracleConn.Open();
        }

        OracleTransaction vOracleTrans = vOracleConn.BeginTransaction(IsolationLevel.ReadCommitted);
        OracleCommand vOracleCmd = new OracleCommand();
        vOracleCmd.Connection = vOracleConn;
        vOracleCmd.Transaction = vOracleTrans;
        try
        {
            for (int i = 0; i < vI; i++)
            {
                if (string.IsNullOrEmpty(vSqlArray[i]) == false)
                {
                    vSql = vSqlArray[i];

                    vOracleCmd.CommandText = vSql;
                    vOracleCmd.ExecuteNonQuery();
                }
            }
            vOracleTrans.Commit();
        }
        catch (Exception ex)
        {
            vOracleTrans.Rollback();
            CloseOracleDBConn(vOracleConn);
            MyLog vMyLog = new MyLog();
            vMyLog.WriteLog("", vSql, ex);
            AppMain.OraMsg = ex.Message;
            return ex.Message;
        }

        CloseOracleDBConn(vOracleConn);

        return "SUCCESS";
    }

    public void ExcuteProcedureWithNonQuery(string vProcedureName, OracleParameter[] parameters)
    {
        OracleConnection vOracleConn = OpenOracleDBConn();

        try
        {
            if (vOracleConn.State != ConnectionState.Open)
            {
                vOracleConn.Open();
            }

            OracleCommand vOracleCmd = new OracleCommand();
            vOracleCmd.Connection = vOracleConn;
            vOracleCmd.CommandText = vProcedureName;
            vOracleCmd.CommandType = CommandType.StoredProcedure;

            foreach (OracleParameter parameter in parameters)
            {
                vOracleCmd.Parameters.Add(parameter);
            }

            vOracleCmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            MyLog vMyLog = new MyLog();
            WriteLog("异常信息:ExcuteProcedureWithNonQuery:" + ex.Message);
            AppMain.OraMsg = ex.Message;
        }
        finally
        {
            CloseOracleDBConn(vOracleConn);
        }
    }
    public string ExcuteProcedureWithSingleString(string vProcedureName, OracleParameter[] parameters)
    {
        string vTempStr = string.Empty;
        OracleParameter vOutMessage;
        OracleConnection vOracleConn = OpenOracleDBConn();
        try
        {
            if (vOracleConn.State != ConnectionState.Open)
            {
                vOracleConn.Open();
            }

            OracleCommand vOracleCmd = new OracleCommand();
            vOracleCmd.Connection = vOracleConn;
            vOracleCmd.CommandText = vProcedureName;
            vOracleCmd.CommandType = CommandType.StoredProcedure;

            vOutMessage = new OracleParameter("O_FLAG", OracleType.VarChar);
            vOutMessage.Direction = ParameterDirection.Output;
            vOutMessage.Size = 100;
            vOracleCmd.Parameters.Add(vOutMessage);

            foreach (OracleParameter parameter in parameters)
            {
                vOracleCmd.Parameters.Add(parameter);
            }

            vOracleCmd.ExecuteNonQuery();
            vOracleCmd.Dispose();
            vOracleCmd = null;

            vTempStr = vOutMessage.Value.ToString();

        }
        catch (Exception ex)
        {
            MyLog vMyLog = new MyLog();
            WriteLog("异常信息:ExcuteProcedureWithNonQuery:" + ex.Message);
        }
        finally
        {
            CloseOracleDBConn(vOracleConn);
        }

        return vTempStr;
    }
    public int ExcuteProcedureWithSingleNum(string vProcedureName, OracleParameter[] parameters)
    {
        int vI = 0;
        OracleParameter vOutMessage;
        OracleConnection vOracleConn = OpenOracleDBConn();
        try
        {
            if (vOracleConn.State != ConnectionState.Open)
            {
                vOracleConn.Open();
            }

            OracleCommand vOracleCmd = new OracleCommand();
            vOracleCmd.Connection = vOracleConn;
            vOracleCmd.CommandText = vProcedureName;
            vOracleCmd.CommandType = CommandType.StoredProcedure;

            vOutMessage = new OracleParameter("O_FLAG", OracleType.Int32);
            vOutMessage.Direction = ParameterDirection.Output;
            vOutMessage.Size = 100;
            vOracleCmd.Parameters.Add(vOutMessage);

            foreach (OracleParameter parameter in parameters)
            {
                vOracleCmd.Parameters.Add(parameter);
            }

            vOracleCmd.ExecuteNonQuery();
            vOracleCmd.Dispose();
            vOracleCmd = null;

            vI = System.Convert.ToInt32(vOutMessage.Value);

        }
        catch (Exception ex)
        {
            MyLog vMyLog = new MyLog();
            WriteLog("异常信息:ExcuteProcedureWithNonQuery:" + ex.Message);
        }
        finally
        {
            CloseOracleDBConn(vOracleConn);
        }

        return vI;
    }


    /// <summary>
    /// Creates the parameter.
    /// </summary>
    /// <param name="name">The name.</param>
    /// <param name="dbType">Type of the db.</param>
    /// <param name="size">The value size</param>
    /// <param name="direction">The direction.</param>
    /// <param name="paramValue">The param value.</param>
    /// <returns></returns>
    public OracleParameter CreateParameter(string vProcedureName, OracleType vOracleType, int vSize, ParameterDirection vDirection, object vParamValue)
    {
        OracleParameter vOracleParameter = new OracleParameter();
        vOracleParameter.ParameterName = vProcedureName;
        vOracleParameter.OracleType = vOracleType;
        vOracleParameter.Size = vSize;
        vOracleParameter.Direction = vDirection;

        if (!(vOracleParameter.Direction == ParameterDirection.Output))
        {
            vOracleParameter.Value = vParamValue;
        }

        return vOracleParameter;
    }

 

    private OracleConnection OpenOracleDBConn()
    {
        string vConnStr = string.Empty;

        string vOraDBName = System.Configuration.ConfigurationManager.AppSettings["OraDBName"];
        switch (vOraDBName)
        {
            case "MESDB_03":
                vConnStr = "Data Source=SZMESDB;Persist Security Info=True;User ID=MESDB_03;Password=MESDB;Unicode=True;";
                break;
            case "MESDBTEST_03":
                vConnStr = "Data Source=SZMESDB;Persist Security Info=True;User ID=MESDB_03;Password=MESDB;Unicode=True;";
                break;
            default:
                vConnStr = "Data Source=SZMESDB;Persist Security Info=True;User ID=MESDBTEST_03;Password=MESDB;Unicode=True;";
                break;
        }

        OracleConnection vOracleConnection = new OracleConnection(vConnStr);
        if (vOracleConnection.State != ConnectionState.Open)
        {
            vOracleConnection.Open();
        }
        return vOracleConnection;
    }
    private void CloseOracleDBConn(OracleConnection vOracleConnection)
    {
        if (vOracleConnection.State == ConnectionState.Open)
        {
            vOracleConnection.Close();
        }
    }

    private OracleDataAdapter CreateOleDbDataAdapter(string vSql)
    {
        OracleConnection vOracleConn = OpenOracleDBConn();
        OracleDataAdapter vOracleDataAdapter = new OracleDataAdapter(vSql, vOracleConn);
        CloseOracleDBConn(vOracleConn);
        return vOracleDataAdapter;
    }

    public string GetDateTimeNow()
    {
        return System.DateTime.Now.ToString("u").Replace("Z", "").Replace("z", "");
    }

    private void WriteLog(string vMessage)
    {
        try
        {
            string vTempValue = string.Empty;
            string vFilePath = Application.StartupPath;
            string vXmlPath = System.Configuration.ConfigurationManager.AppSettings["LogAddress"];
            vXmlPath = vFilePath + vXmlPath;
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(vXmlPath);

            XmlNode root = xmlDoc.SelectSingleNode("//root");

            XmlElement xe = xmlDoc.CreateElement("Node");//创建一个节点

            XmlElement xesub01 = xmlDoc.CreateElement("RowNum");
            xesub01.InnerText = root.ChildNodes.Count.ToString();
            xe.AppendChild(xesub01);//添加到节点中

            XmlElement xesub02 = xmlDoc.CreateElement("Message");
            xesub02.InnerText = vMessage;
            xe.AppendChild(xesub02);//添加到节点中

            XmlElement xesub03 = xmlDoc.CreateElement("InserTime");
            xesub03.InnerText = GetDateTimeNow();
            xe.AppendChild(xesub03);//添加到节点中

            root.AppendChild(xe);//添加到节点中

            xmlDoc.Save(vXmlPath);

            root = null;
            xmlDoc = null;

        }
        catch (Exception ex)
        {
            WriteLog(ex.Message);
        }
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值