oracle数据库访问类

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Data.OracleClient;
//using Oracle.DataAccess;
//using Oracle.DataAccess.Types;
//using Oracle.DataAccess.Client;

namespace NewUserInstall
{
    public class DBAccess
    {
        private static OracleConnection OraConn;
        private static OracleCommand OraCmd;
        public static string dbName;//DB名称
        public static string dbUser;//DB连接用户
        public static bool DBConnect(string puser,string pwd,string ds)
        {
            //DB连接 
            try
            {
                if (OraConn!= null)//如果连接没关闭,先关闭
                    DBClose();

                    string ConString = "Data Source=" + ds + ";User Id=" + puser + ";Password=" + pwd;
                    OraConn = new OracleConnection(ConString);
                    OraCmd = new OracleCommand("", OraConn);
                    OraConn.Open();
                    //dbName=OraConn.DatabaseName.ToString();
                    //dbName = OraConn.DataSource.ToString();
                    //dbUser=OraConn.GetSchema().ToString();
                    return true;

            }
            catch(Exception ex){
                MessageBox.Show(ex.Message);
                return false;
            }
        }

        public static DataTable DBExecStoredProcedure(string spName, OracleParameter[] sqlParme)
        {
            try
            {
                //使用oracle的客户端DataAccess访问
                OraCmd.CommandText = spName;
                OraCmd.CommandType = CommandType.StoredProcedure;
                OraCmd.Parameters.Clear();//先清空
                foreach (OracleParameter parme in sqlParme)
                {
                    OraCmd.Parameters.Add(parme);
                }
                //使用微软的ORACLE访问接口
                //参数2
                //sqlParme1.ParameterName = "POUT";
                //sqlParme1.OracleDbType = OracleDbType.Varchar2;
                //sqlParme[1] = OraCmd.Parameters.Add("POUT", OracleDbType.Varchar2);
                //sqlParme.Value = "2020";
                参数3
                //sqlParme = OraCmd.Parameters.Add("pGoodsId", OracleType.VarChar);
                //sqlParme.Direction = ParameterDirection.Input;
                //sqlParme.Value = "07001";

                //执行
                //OraCmd.ExecuteNonQuery();
                //MessageBox.Show(OraCmd.Parameters["POUT"].Value.ToString());

                DataSet ds1;
                DateTime EndTime;
                TimeSpan sp;
                ds1 = new DataSet();
                DateTime BegTime = System.DateTime.Now;
                OracleDataAdapter da1 = new OracleDataAdapter(OraCmd);//取出数据
                da1.Fill(ds1);
                EndTime = System.DateTime.Now;
                string str = "spare time:" + (EndTime - BegTime).ToString();
                DataTable dt = ds1.Tables[0];
                if (dt != null && dt.Rows.Count != 0)
                    MessageBox.Show("返回记录数" + dt.Rows.Count.ToString() + "\n" + str);
                return dt;
            }
            catch (InvalidCastException e)
            {
                return null;
            }
        }

        //执行多条插入
        public static bool DBExeMuSql(string[] strMSql)
        {
            bool br = true;
            //使用oracle的客户端DataAccess访问
            if (OraConn.State == ConnectionState.Closed)
                OraConn.Open();
            OraCmd = new OracleCommand("", OraConn);
            OracleTransaction tx = OraConn.BeginTransaction();
            OraCmd.Transaction = tx;
            try
            {
                foreach (string sSql in strMSql)
                {
                    try
                    {
                        OraCmd.CommandText = sSql;
                        OraCmd.ExecuteNonQuery();
                    }
                    catch(Exception e)
                    {
                        MessageBox.Show(e.Message + sSql);
                        throw;
                    }
                }
                tx.Commit();
                br = true;
            }
            catch (OracleException ex)
            {
                br = false;
                tx.Rollback();
                MessageBox.Show(ex.Message);
                return br;
            }
            return br;
        }

        public static DataTable DBExecSql(string strSql)
        {
            string strResult = "";
            //使用oracle的客户端DataAccess访问
            OraCmd.CommandText = strSql;
            try
            {
                OracleDataAdapter da1 = new OracleDataAdapter(OraCmd);
                DataTable dt = new DataTable();
                da1.Fill(dt);

                return dt;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return null;
            }
        }

        //关闭数据库连接
        public static bool DBClose()
        {
            try
            {
            if (OraConn!=null)
                OraConn.Close();
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值