`

DbOracleData oracle 数据库连接类

阅读更多

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Collections;
using System.Data.OracleClient;
using System.Configuration;

namespace Common.Dba
{
    public class DbOracleData : DbAccess
    {
        new OracleCommand cmd = null;
        public DbOracleData()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
            conn = new OracleConnection();
            conn.ConnectionString = ConnectionString;//Convert.ToString(System.Configuration.ConfigurationSettings.AppSettings["datasource"]);
            //conn.ConnectionString = "initial catalog=idyan_new;data source=.;user id=bt;password=btbtbtbt;Connect Timeout=5000";
            cmd = new OracleCommand();
            cmd.Connection = conn as OracleConnection;
            cmd.CommandTimeout = 0;

        }
        public DbOracleData(string constr)
        {

            //
            // TODO: 在此处添加构造函数逻辑
            //
            conn = new OracleConnection();
            //conn.ConnectionString = "initial catalog=pubs;data source=.;user id=sa;password=";
            //conn.ConnectionString = Convert.ToString(System.Configuration.ConfigurationSettings.AppSettings["datasource"]);
            conn.ConnectionString = constr;// "initial catalog=idyan_new;data source=.;user id=bt;password=btbtbtbt";
            cmd = new OracleCommand();
            cmd.Connection = conn as OracleConnection;
            cmd.CommandTimeout = 0;

        }
        /// <summary>
        /// 获取数据根据Oracle语句
        /// </summary>
        /// <param name="Oracle"></param>
        /// <returns></returns>
        public override DataTable GetTable(string sql)
        {
            DataSet ds = new DataSet();

            try
            {
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;
                OracleDataAdapter da = new OracleDataAdapter();
                da.SelectCommand = cmd;
                da.Fill(ds);
            }
            catch (Exception ex)
            {


                return null;

            }
            return ds.Tables[0] ?? new DataTable();
        }
        /// <summary>
        /// 获取数据根据sql语句
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public override DataSet GetDataSet(string sql)
        {
            DataSet ds = new DataSet();

            try
            {
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;
                OracleDataAdapter da = new OracleDataAdapter();
                da.SelectCommand = cmd;

                da.Fill(ds);
            }
            catch (Exception ex)
            {
                return null;
            }
            return ds;
        }
        /// <summary>
        /// 获取数据根据sql语句
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public override DataSet GetDataSet(string sql, DbParameter[] pas)
        {
            DataSet ds = new DataSet();

            try
            {
                cmd.Parameters.Clear();
                cmd.CommandText = sql;
                foreach (OracleParameter pa in pas)
                {
                    cmd.Parameters.Add(pa);
                }
                cmd.CommandType = CommandType.Text;
                OracleDataAdapter da = new OracleDataAdapter();
                da.SelectCommand = cmd;

                da.Fill(ds);
            }
            catch (Exception ex)
            {


                return null;

            }
            return ds;
        }
        /// <summary>
        /// 获取数据根据sql语句 带参数 的
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public override DataTable GetTable(string sql, params DbParameter[] pas)
        {
            DataSet ds = new DataSet();
            try
            {
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;
                OracleDataAdapter da = new OracleDataAdapter();
                da.SelectCommand = cmd;
                cmd.Parameters.Clear();

                foreach (OracleParameter temppa in pas)
                {
                    cmd.Parameters.Add(temppa);
                }


                da.Fill(ds);
            }
            catch (Exception ex)
            {


                return null;
            }
            return ds.Tables[0] ?? new DataTable();
        }
        /// <summary>
        /// 获取数据根据sql语句 带参数 的
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public override DataTable GetProcTable(string procname, params DbParameter[] pas)
        {
            DataSet ds = new DataSet();
            try
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = procname;
                //cmd.CommandText = sql;
                OracleDataAdapter da = new OracleDataAdapter();
                da.SelectCommand = cmd;
                cmd.Parameters.Clear();

                foreach (OracleParameter temppa in pas)
                {
                    cmd.Parameters.Add(temppa);
                }

 

                da.Fill(ds);
            }
            catch (Exception ex)
            {


                return null;
            }
            return ds.Tables[0] ?? new DataTable();
        }
        /// <summary>
        /// 获取数据根据sql语句 带参数 的
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public override DataTable GetProcCursorTable(string procname, params DbParameter[] pas)
        {
            DataSet ds = new DataSet();
            try
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = procname;
                //cmd.CommandText = sql;
                OracleDataAdapter da = new OracleDataAdapter();
                da.SelectCommand = cmd;
                cmd.Parameters.Clear();

                foreach (OracleParameter temppa in pas)
                {
                    cmd.Parameters.Add(temppa);
                }

 

                da.Fill(ds);
            }
            catch (Exception ex)
            {


                return null;
            }
            return ds.Tables[1] ?? new DataTable();
        }
        /// <summary>
        /// 获取数据根据sql语句 带参数 的
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public override int GetProcState(string procname, params DbParameter[] pas)
        {
            int state = 0;
            try
            {
                OpenConn();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = procname;
                cmd.Parameters.Clear();
                foreach (OracleParameter temppa in pas)
                {
                    cmd.Parameters.Add(temppa);
                }
                cmd.ExecuteNonQuery();
                CloseConn();
                state = Convert.ToInt32(pas[pas.Length - 1].Value);

            }
            catch
            {
                return 0;
            }
            return state;
        }
        /// <summary>
        /// 获取数据根据sql语句 带参数 的
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public override int GetProcStateNo(string procname, params DbParameter[] pas)
        {
            int state = 0;
            try
            {
                OpenConn();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = procname;
                cmd.Parameters.Clear();
                foreach (OracleParameter temppa in pas)
                {
                    cmd.Parameters.Add(temppa);
                }
                cmd.ExecuteNonQuery();
                CloseConn();
                state = 1;

                // state = Convert.ToInt32(pas[pas.Length - 1].Value);

            }
            catch
            {

                return 0;
            }
            return state;
        }
        /// <summary>
        /// 存储过程返回值的
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public override string GetProcStateReturnValue(string procname, params DbParameter[] pas)
        {
            string state = "";
            try
            {
                OpenConn();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = procname;
                cmd.Parameters.Clear();
                foreach (OracleParameter temppa in pas)
                {
                    cmd.Parameters.Add(temppa);
                }
                cmd.Parameters.AddWithValue("@Return_Value", "").Direction = ParameterDirection.ReturnValue;
                cmd.ExecuteNonQuery();
                state = Convert.ToString(cmd.Parameters["@Return_Value"].Value);
                state = state == null ? ("") : (state);
                CloseConn();


                // state = Convert.ToInt32(pas[pas.Length - 1].Value);

            }
            catch
            {

                return "";
            }
            return state;
        }
        /// <summary>
        /// 根据sql语句返回跟新状态
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public override bool GetState(string sql)
        {
            bool succ = false;
            try
            {
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;
                OpenConn();
                succ = cmd.ExecuteNonQuery() > 0 ? (true) : (false);
                CloseConn();
            }
            catch (Exception ex)
            {


                return false;
            }
            return succ;

        }
        /// <summary>
        /// 根据sql语句返回跟新状态带参数的
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="pas">参数的集合</param>
        /// <returns></returns>
        public override bool GetState(string sql, params DbParameter[] pas)
        {
            bool succ = false;
            try
            {
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;
                cmd.Parameters.Clear();

                foreach (OracleParameter temppa in pas)
                {
                    cmd.Parameters.Add(temppa);
                }
                OpenConn();
                succ = cmd.ExecuteNonQuery() > 0 ? (true) : (false);
                CloseConn();
            }
            catch
            {

                // this.ShowError(ex.Message);
                //using (System.IO.StreamWriter sw = new System.IO.StreamWriter("D:\\error2008.txt"))
                //{
                //    sw.Write(ex.Message);
                //    sw.Flush();
                //}
                return false;
            }
            return succ;

        }
        /// <summary>
        /// 根据sql语句返回第一个单元格的数据
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public override string GetOne(string sql)
        {
            string res = "";
            try
            {
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;
                OpenConn();
                res = cmd.ExecuteScalar() == null ? ("") : (Convert.ToString(cmd.ExecuteScalar()));
                CloseConn();
            }
            catch (Exception ex)
            {


                return null;
            }
            return res;
        }
        /// <summary>
        ///  根据sql语句返回第一个单元格的数据带参数的
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public override string GetOne(string sql, params DbParameter[] pas)
        {
            string res = "";
            try
            {
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;
                cmd.Parameters.Clear();

                foreach (OracleParameter temppa in pas)
                {
                    cmd.Parameters.Add(temppa);
                }
                OpenConn();
                res = cmd.ExecuteScalar() == null ? ("") : (Convert.ToString(cmd.ExecuteScalar()));
                CloseConn();
            }
            catch (Exception ex)
            {
                CloseConn();

                return null;
            }
            return res;
        }
        /// <summary>
        /// 返回数据的DataReader
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public override DbDataReader GetDataReader(string sql)
        {
            OracleDataReader dr = null;
            try
            {
                cmd.CommandType = CommandType.Text;
                conn.Open();
                cmd.CommandText = sql;
                dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch (Exception ex)
            {


                return null;
            }
            return dr;
        }
        /// <summary>
        /// 返回数据的DataReader带参数的
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public override DbDataReader GetDataReader(string sql, params DbParameter[] pas)
        {
            OracleDataReader dr = null;
            try
            {
                cmd.CommandType = CommandType.Text;
                conn.Open();
                cmd.Parameters.Clear();

                foreach (OracleParameter temppa in pas)
                {
                    cmd.Parameters.Add(temppa);
                }

                cmd.CommandText = sql;
                dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch (Exception ex)
            {


                return null;
            }
            return dr;
        }
        /// <summary>
        /// 事务处理函数
        /// </summary>
        /// <param name="al"></param>
        /// <returns></returns>
        public override bool GetTranState(ArrayList al)
        {
            cmd.CommandType = CommandType.Text;
            OpenConn();
            OracleTransaction tran = (conn as OracleConnection).BeginTransaction();
            cmd.Transaction = tran;
            try
            {
                for (int i = 0; i < al.Count; i++)
                {
                    cmd.CommandText = Convert.ToString(al[i]);
                    cmd.ExecuteNonQuery();
                }

                tran.Commit();
                CloseConn();
            }
            catch
            {

                tran.Rollback();
                CloseConn();
                return false;
            }
            return true;

        }
      
        /// <summary>
        /// 分页函数
        /// </summary>
        /// <param name="pagesize"></param>
        /// <param name="columns"></param>
        /// <param name="tablename"></param>
        /// <param name="pid"></param>
        /// <param name="order"></param>
        /// <param name="current"></param>
        /// <returns></returns>
        public override DataTable GetPageData(int current, int pagesize, string columns, string tablename, string pid, string where, string order)
        {
            current = current - 1 >= 0 ? (current - 1) : (0);
            string sql = string.Format("select top {0} {1} from {2} where 1=1 and {3} not in(select top {4}{3} from {2} where 1=1{5}  order by {6}){5} order by {6}", pagesize, columns, tablename, pid, current * pagesize, where, order);
            return GetTable(sql);
          
        }
        /// <summary>
        /// 分页存储过程的调用
        /// </summary>
        /// <param name="current"></param>
        /// <param name="pagesize"></param>
        /// <param name="columns"></param>
        /// <param name="tablename"></param>
        /// <param name="pid"></param>
        /// <param name="where"></param>
        /// <param name="order"></param>
        /// <returns></returns>
        public override DataTable GetProcPageData(int current, int pagesize, string columns, string tablename, string pid, string where, string order, string ordertype)
        {
            OracleParameter[] pas = { new OracleParameter("@PageIndex", current), new OracleParameter("@PageSize", pagesize), new OracleParameter("@Columns", columns), new OracleParameter("@Tablename", tablename), new OracleParameter("@Where", where), new OracleParameter("@Order", order), new OracleParameter("@OrderType", ordertype), new OracleParameter("@Pid", pid) };
            return GetProcTable("Pages", pas);
            //current = current - 1 >= 0 ? (current - 1) : (0);
            //string sql = string.Format("select top {0} {1} from {2} where 1=1 and {3} not in(select top {4}{3} from {2} where 1=1{5}  order by {6}){5} order by {6}", pagesize, columns, tablename, pid, current * pagesize, where, order);
            //return GetTable(sql);
        }
        /// <summary>
        /// 分页存储过程的调用
        /// </summary>
        /// <param name="current"></param>
        /// <param name="pagesize"></param>
        /// <param name="columns"></param>
        /// <param name="tablename"></param>
        /// <param name="pid"></param>
        /// <param name="where"></param>
        /// <param name="order"></param>
        /// <returns></returns>
        public override DataTable GetProcData(int current, int pagesize, string columns, string tablename, string pid, string where, string order, string resultCount, string distinct)
        {
            OracleParameter[] pas = { new OracleParameter("@TableNames", OracleType.NVarChar, 200), new OracleParameter("@PrimaryKey", OracleType.NVarChar, 100), new OracleParameter("@Order", OracleType.NVarChar, 200), new OracleParameter("@CurrentPage", OracleType.Number), new OracleParameter("@PageSize", OracleType.Number), new OracleParameter("@Fields", OracleType.NVarChar, 800), new OracleParameter("@Filter", OracleType.NVarChar, 1000), new OracleParameter("@ResultCount", OracleType.NVarChar, 12), new OracleParameter("@distinct", OracleType.NVarChar, 12) };
            pas[0].Value = tablename;
            pas[1].Value = pid;
            pas[2].Value = order;
            pas[3].Value = current;
            pas[4].Value = pagesize;
            pas[5].Value = columns;
            pas[6].Value = where;
            pas[7].Value = resultCount;
            pas[8].Value = distinct;
            return this.GetProcTable("Pages", pas);
      
        }
        /// <summary>
        /// 分页存储过程的调用
        /// </summary>
        /// <param name="current"></param>
        /// <param name="pagesize"></param>
        /// <param name="columns"></param>
        /// <param name="tablename"></param>
        /// <param name="pid"></param>
        /// <param name="where"></param>
        /// <param name="order"></param>
        /// <returns></returns>
        public override DataTable GetProcAdminData(int current, int pagesize, string columns, string tablename, string pid, string where, string order, string resultCount, string distinct)
        {
            OracleParameter[] pas = { new OracleParameter("@TableNames", OracleType.NVarChar, 200), new OracleParameter("@PrimaryKey", OracleType.NVarChar, 100), new OracleParameter("@Order", OracleType.NVarChar, 200), new OracleParameter("@CurrentPage", OracleType.Number), new OracleParameter("@PageSize", OracleType.Number), new OracleParameter("@Fields", OracleType.NVarChar, 800), new OracleParameter("@Filter", OracleType.NVarChar, 200), new OracleParameter("@ResultCount", OracleType.NVarChar, 24), new OracleParameter("@Distinct", OracleType.NVarChar, 12) };
            pas[0].Value = tablename;
            pas[1].Value = pid;
            pas[2].Value = order;
            pas[3].Value = current;
            pas[4].Value = pagesize;
            pas[5].Value = columns;
            pas[6].Value = where;
            pas[7].Value = resultCount;
            pas[8].Value = distinct;
            return this.GetProcTable("Pages", pas);

        }
        public override DbParameter[] MakeParameters(params string[] str)
        {
            OracleParameter[] pas = new OracleParameter[str.Length / 2];
            for (int i = 0; i < str.Length / 2; i++)
            {
                pas[i] = new OracleParameter(string.Format(":{0}", str[2 * i]), str[2 * i + 1]);
            }
            return pas;
        }
    
    }
}

分享到:
评论

相关推荐

    geoserver2.14.0 oracle 数据库连接

    在GeoServer中连接Oracle数据库,需要确保系统已安装了Oracle数据库驱动,这通常通过JDBC(Java Database Connectivity)实现。在这个案例中,`gt-jdbc-oracle-20.0.jar`文件是一个Oracle JDBC驱动包,它使得Java...

    易语言oracle数据库连接模块源码

    在易语言中,开发Oracle数据库连接模块是为了实现对Oracle数据库的高效、便捷操作。Oracle数据库是全球广泛使用的大型关系型数据库管理系统,适用于处理大量数据和并发事务。 Oracle数据库连接模块的核心在于如何...

    oracle数据库连接工具

    "Oracle数据库连接工具"指的是可以方便地连接到Oracle数据库并执行各种操作的软件应用。在给定的标签中提到了"oracle navicat",这指的是Navicat,一个知名的数据库管理工具,特别适合于Oracle数据库的连接和管理。 ...

    易语言连接Oracle数据库

    本文将详细介绍如何使用易语言连接Oracle数据库,并探讨相关组件的使用。 首先,连接Oracle数据库的基础是确保本机已经安装了Oracle客户端。Oracle客户端包含了连接Oracle服务器所需的所有组件,包括网络配置、...

    C#中的oracle数据库连接字符串,数据库帮助类,DBHelper.cs

    C#中的 Oracle 数据库连接字符串和数据库帮助类 C# 中的 Oracle 数据库连接字符串是指在 C# 项目中连接 Oracle 数据库所需的字符串。该字符串通常包含了数据库连接所需的信息,如数据库服务器的地址、用户名、密码...

    JAVA 使用数据库连接池连接Oracle数据库全代码

    ### JAVA 使用数据库连接池连接Oracle数据库全代码解析 #### 一、概述 本文将详细介绍如何在Java项目中使用Apache DBCP(Database Connection Pool)来连接Oracle数据库,并提供完整的示例代码。通过这种方式,我们...

    oracle数据库连接测试软件

    DataBaseHelper帮助类中包含了默认的连接字符串格式,修改完IP和用户名密码就可以使用,也可以在连接的时候直接输入连接字符串和sql语句。可以直接使用release下的exe 建议使用升级过的版本:...

    Oracle-新建Oracle数据库并连接(图文,详细).docx

    新建Oracle数据库并连接详细教程 在这篇教程中,我们将学习如何新建Oracle数据库并连接到该数据库。该教程分为两部分:新建Oracle数据库和连接到数据库。 新建Oracle数据库 新建Oracle数据库需要使用Database ...

    Oracle数据库连接封装类

    本篇将详细介绍如何使用Java连接Oracle数据库,并提供一个封装好的连接类的使用方法。 首先,我们需要了解JDBC的基本概念。JDBC是Java平台的标准API,它允许Java应用程序连接到各种类型的数据库,包括Oracle。在...

    ojdbc6--oracle数据库连接驱动.rar

    1. 添加ojdbc6驱动到项目类路径:首先,将下载的"ojdbc6--oracle数据库连接驱动.rar"解压,获取到ojdbc6.jar文件。这个jar文件包含驱动实现,需要将其添加到Java项目的类路径中,无论是IDE如Eclipse、IntelliJ IDEA...

    C#版Oracle数据库通用操作类

    `ConnForOracle` 类主要实现了对 Oracle 数据库的基本操作,包括但不限于连接数据库、执行 SQL 语句以及返回结果集等功能。通过此类可以有效地简化数据库操作代码,并提高开发效率。 #### 二、基本属性与构造函数 ...

    如何连接oracle数据库及故障解决办法

    连接 Oracle 数据库是每个开发者和数据库管理员都需要掌握的基本技能,但是很多人在连接 Oracle 数据库时都会遇到各种问题,本文将详细介绍如何连接 Oracle 数据库及故障解决办法。 首先,在连接 Oracle 数据库之前...

    Oracle数据库的安装配置方法及C#连接操作Oracle数据库技巧、通用类等资料搜集整理

    搜集整理的Oracle数据库安装与配置方法以及C#连接操作Oracle数据库的典型代码,比较管用的说。主要包括10个方面内容:1、ORACLE817安装(服务器端/客户端)。2、ORACLE817配置(服务器端)。3、ORACLE817配置...

    Oracle 数据库连接工具

    Oracle 数据库连接工具是用于与Oracle数据库进行交互的软件应用,它使得数据库管理员、开发人员以及数据分析师能够方便地管理、查询和操作Oracle数据库系统。Oracle数据库是全球广泛使用的大型关系型数据库管理系统...

    sap 与 oracle数据库的连接

    SAP与Oracle数据库的连接 SAP系统与Oracle数据库的连接是SAP开发中的一个重要步骤,该连接允许SAP系统访问Oracle数据库中的数据,实现数据交换和共享。在本文中,我们将详细介绍SAP开发中模块连接Oracle数据库的...

    Oracle数据库连接工具PLSQL轻桌面工具包

    Oracle数据库连接工具PLSQL轻桌面工具包,安装PLSQL必须下载轻桌面工具包

    ArcGIS与Oracle数据库连接.docx

    ### ArcGIS与Oracle数据库连接详解 #### 一、概述 ArcGIS是一款强大的地理信息系统软件,广泛应用于地图制作、地理数据分析以及地理信息系统管理等领域。而Oracle数据库则是业界领先的关系型数据库管理系统之一,...

    易语言连接远程Oracle数据库源码

    在易语言中,连接远程Oracle数据库是一项常见的任务,这对于数据处理和信息管理至关重要。Oracle数据库是全球广泛使用的大型企业级关系型数据库管理系统,它提供了高效、稳定的数据存储和处理能力。 要实现易语言...

    Oracle数据库访问类

    1. ADO.NET的OracleClient:这是.NET Framework自带的Oracle数据库访问组件,提供了System.Data.OracleClient命名空间,包含OracleConnection、OracleCommand、OracleDataReader等类,用于建立连接、执行命令和读取...

Global site tag (gtag.js) - Google Analytics