zoukankan      html  css  js  c++  java
  • 个人数据库帮助类

    个人数据库帮助类:提供两种访问方式OleDb(需安装Oracle客户端)和 Oracle.ManagedDataAccess.Client(需Oracle.ManagedDataAccess.dll)

    多说无益上代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Oracle.ManagedDataAccess.Client;
    using Oracle.ManagedDataAccess.Types;
    using System.Data;
    using System.Data.OleDb;
    using System.Data.Common;
    using Gaofajin.Attribute;

    namespace Gaofajin.Data
    {
      
        public class DbHelper
        {
            public bool IsOledb { get; set; } = false;
          
            DbConnection connection;
            DbCommand cmd;
            DbCommandBuilder cmb;
            DbDataAdapter adp;
            DbTransaction transaction;
            public String DBVersion
            {
                get
                {
                    if (connection != null)
                        return connection.ServerVersion;
                    return "未知";
                }
            }
            public DbConnection GetConnection() => connection;
            string Try_catch(Action a)
            {
                try
                {
                    a();
                    return "操作成功!";
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }
            public void SetConnectionString(string constr)
            {
                if (IsOledb)
                    connection = new OleDbConnection();
                else connection = new OracleConnection();
                    connection.ConnectionString = constr;
            }
            public string Open()=> Try_catch(connection.Open);
            public string Close()=>Try_catch(connection.Close);
            public DbResult GetData(string sql)
            {
                try
                {
                    if (IsOledb)
                    {
                        cmd = new OleDbCommand(sql, (OleDbConnection)connection);
                        adp = new OleDbDataAdapter((OleDbCommand)cmd);
                    }
                    else
                    {
                        cmd = new OracleCommand(sql, (OracleConnection)connection);
                        adp = new OracleDataAdapter((OracleCommand)cmd);
                    }
                    DataTable dt = new DataTable();
                    int m = adp.Fill(dt);
                    return new DbResult(m, "执行查询成功!", dt);
                }
                catch (Exception ex)
                {
                    return new DbResult(-1, ex.Message, null);
                }
            }
            public DbResult GetDataforUpdate(string sql)
            {
                try
                {
                    if (IsOledb)
                    {
                        cmd = new OleDbCommand(sql, (OleDbConnection)connection);
                        adp = new OleDbDataAdapter((OleDbCommand)cmd);
                        cmb = new OleDbCommandBuilder((OleDbDataAdapter)adp);
                    }
                    else
                    {
                        cmd = new OracleCommand(sql, (OracleConnection)connection);
                        adp = new OracleDataAdapter((OracleCommand)cmd);
                        cmb = new OracleCommandBuilder((OracleDataAdapter)adp);
                    }
                    DataTable dt = new DataTable();
                    int m = adp.Fill(dt);
                    return new DbResult(m, "执行查询成功!", dt);
                }
                catch (Exception ex)
                {
                    return new DbResult(-1, ex.Message, null);
                }
            }
            public void UpdateFrom(DataTable dt)
            {
                if (adp != null)
                    adp.Update(dt);
            }
            public DbResult ExeSql(string sql)
            {
                try
                {
                    if (IsOledb)
                    {
                        cmd = new OleDbCommand(sql, (OleDbConnection)connection);
                    }
                    else
                    {
                        cmd = new OracleCommand(sql, (OracleConnection)connection);
                    }
                    int m = cmd.ExecuteNonQuery();
                    return new DbResult(m, "执行SQL成功!", null);
                }
                catch (Exception ex)
                {
                    return new DbResult(-1, ex.Message, null);
                }
            }
            public DbResult Proc(string ProcName, IDataParameter[] paras)
            {
                try
                {
                    if (IsOledb)
                    {
                        cmd = new OleDbCommand
                        {
                            Connection = (OleDbConnection)connection,
                            CommandText = ProcName,
                            CommandType = CommandType.StoredProcedure
                        };
                    }
                    else
                    {
                        cmd = new OracleCommand
                        {
                            Connection = (OracleConnection)connection,
                            CommandText = ProcName,
                            CommandType = CommandType.StoredProcedure
                        };
                    }
                    foreach (var para in paras)
                    {
                        cmd.Parameters.Add(para);
                    }
                    int m = cmd.ExecuteNonQuery();
                    return new DbResult(m, "执行存储过程成功!", null);
                }
                catch (Exception ex)
                {
                    return new DbResult(-1, ex.Message, null);
                }
            }
            public DbResult Procselect(string ProcName, IDataParameter[] paras)
            {
                try
                {
                    if (IsOledb)
                    {
                        adp = new OleDbDataAdapter
                        {
                            SelectCommand = new OleDbCommand
                            {
                                Connection = (OleDbConnection)connection,
                                CommandText = ProcName,
                                CommandType = CommandType.StoredProcedure
                            }
                        };
                    }
                    else
                    {
                        adp = new OracleDataAdapter
                        {
                            SelectCommand = new OracleCommand
                            {
                                Connection = (OracleConnection)connection,
                                CommandText = ProcName,
                                CommandType = CommandType.StoredProcedure
                            }
                        };
                    }
                    adp.SelectCommand.Parameters.AddRange(paras);
                    DataTable dt = new DataTable();
                    int m = adp.Fill(dt);
                    return new DbResult(m, "执行存储过程成功!", dt);
                }
                catch (Exception ex)
                {
                    return new DbResult(-1, ex.Message, null);
                }
            }
            public void BeginTrans()
            {
                transaction = connection.BeginTransaction();
            }
            public void CommitTrans()
            {
                if (transaction != null)
                    transaction.Commit();
            }
            public void RollBack()
            {
                if (transaction != null)
                    transaction.Rollback();
            }
            public List<string> GetAllTableName(string schemaName, String CollName, string User)
            {
                DataTable dt = connection.GetSchema(schemaName);
                List<string> Tablesname = new List<string>();
                if (dt != null)
                {
                    DataRow[] drs = dt.Select(string.Format("TABLE_SCHEMA='{0}'and TABLE_TYPE LIKE'%{1}%'", User, CollName));
                    foreach (var dr in drs)
                    {
                        Tablesname.Add(dr["TABLE_NAME"].ToString());
                    }
                }
                return Tablesname;
            }
            string GetConnecttionString(string host, string port, string service_name, string user, string pwd)
            {
                if (string.IsNullOrEmpty(service_name))
                {
                    System.Windows.Forms.MessageBox.Show("Service_Name不能为空或者null", "错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                    return null;
                }
                if (string.IsNullOrEmpty(user))
                {
                    System.Windows.Forms.MessageBox.Show("userName不能为空或者null", "错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                    return null;
                }
                if (string.IsNullOrEmpty(pwd))
                {
                    System.Windows.Forms.MessageBox.Show("password不能为空或者null", "错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                    return null;
                }
                string str = "DATA SOURCE=\"(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = {0})(PORT = {1})))(CONNECT_DATA = (SERVICE_NAME = {2})))\";USER ID={3};PASSWORD={4}";
                return string.Format(str, (string.IsNullOrEmpty(host) ? "localhost" : host), (string.IsNullOrEmpty(port)? 1521 :int.Parse(port)), service_name, user, pwd);
            }
            string GetConnecttionString(string Name, string user, string pwd)
            {
                if (string.IsNullOrEmpty(Name))
                {
                    System.Windows.Forms.MessageBox.Show("Name不能为空或者null", "错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                    return null;
                }
                if (string.IsNullOrEmpty(user))
                {
                    System.Windows.Forms.MessageBox.Show("user不能为空或者null", "错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                    return null;
                }
                if (string.IsNullOrEmpty(pwd))
                {
                    System.Windows.Forms.MessageBox.Show("password不能为空或者null", "错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                    return null;
                }
                string str = "Provider = MSDAORA.1; User ID = {0}; password ={1}; Data Source = {2}";
                return string.Format(str, user, pwd, Name);
            }
            public string GetConnecttionString(params string[] str) => (IsOledb == true) ? GetConnecttionString(str[0], str[1], str[2]) : GetConnecttionString(str[0], str[1], str[2], str[3], str[4]);
        }
        public class DbResult
        {
            public int ErrCode { get; }
            public string ErrMsg { get; }
            public DataTable Data { get; }
            public DbResult(int ecode, string emsg, DataTable dt)
            {
                ErrCode = ecode;
                ErrMsg = emsg;
                Data = dt;
            }
        }
    }

  • 相关阅读:
    jQuery获取Select选择的Text和 Value(转)
    android学习---EditText
    android学习---Activity
    android学习---LinearLayout
    android学习---布局Layout
    android颜色码制表
    java面试题二
    java面试题一
    基本排序算法java实现
    Integer与int的区别
  • 原文地址:https://www.cnblogs.com/gfjin/p/8079465.html
Copyright © 2011-2022 走看看