写在前面:

常用数据库:

SQLserver:https://www.cnblogs.com/mexihq/p/11636785.html

Oracle:https://www.cnblogs.com/mexihq/p/11700741.html

MySQL:https://www.cnblogs.com/mexihq/p/12463423.html

Access:https://www.cnblogs.com/mexihq/p/12466970.html

类似于上篇有关SQLserver的C#封装,小编对Oracle数据库进行了相应的封装,方便后期开发使用,主要包括Oracle数据库的连接、增、删、改、查,如有什么问题还请各位大佬指教。后续也将对其他几个常用的数据库进行相应的整理。话不多说,直接开始码代码。

引用:

由于微软在.Net框架4.0中已经决定撤销使用System.Data.OracleClient,造成在VS中无法连接Oracle数据库,但它还依旧存在于.Net架构中,我们可以通过自己引用。具体方法如下:
(1)在需要引用的程序集引用文件夹上右击,选择添加引用
(2)选择浏览选项
(3)找到目录 C:\Windows\Microsoft.NET\Framework\v2.0.50727
(4)找到 System.Data.OracleClient.dll 文件
(5)点击确定。OK,引用完成

using System.Data;              //DataSet引用集
using System.Data.OracleClient; //oracle引用

先声明一个SqlConnection

private OracleConnection oracle_con;//声明一个OracleConnection方便使用 

Oracle打开:

/// <summary>
/// Oracle open
/// </summary>
/// <param name="link">link statement</param>
/// <returns>Success:success; Fail:reason</returns>
public string Oracle_Open(string link)
{
  try
  {
    oracle_con = new OracleConnection(link);
    oracle_con.Open();
    return "success";
  }
  catch (Exception ex)
  {
    return ex.Message;
  }
}

Oracle关闭:

/// <summary>
/// Oracle close
/// </summary>
/// <returns>Success:success Fail:reason</returns>
public string Oracle_Close()
{
  try
  {
    if (oracle_con == null)
    {
      return "No database connection";
    }
    if (oracle_con.State == ConnectionState.Open)
    {
      oracle_con.Close();
      oracle_con.Dispose();
    }
    else
    {
      if (oracle_con.State == ConnectionState.Closed)
      {
        return "success";
      }
      if (oracle_con.State == ConnectionState.Broken)
      {
        return "ConnectionState:Broken";
      }
    }
    return "success";
  }
  catch (Exception ex)
  {
    return ex.Message;
  }

}

Oracle的增删改:

/// <summary>
/// Oracle insert,delete,update
/// </summary>
/// <param name="sql">insert,delete,update statement</param>
/// <returns>Success:success + Number of affected rows; Fail:reason</returns>
public string Oracle_Insdelupd(string sql)
{
  try
  {
    int num = 0;
    if (oracle_con == null)
    {
      return "Please open the database connection first";
    }
    if (oracle_con.State == ConnectionState.Open)
    {
      OracleCommand oracleCommand = new OracleCommand(sql, oracle_con);
      num = oracleCommand.ExecuteNonQuery();
    }
    else
    {
      if (oracle_con.State == ConnectionState.Closed)
      {
        return "Database connection closed";
      }
      if (oracle_con.State == ConnectionState.Broken)
      {
        return "Database connection is destroyed";
      }
    }
    return "success" + num;
  }
  catch (Exception ex)
  {
    return ex.Message.ToString();
  }
}

Oracle的查:

/// <summary>
/// Oracle select
/// </summary>
/// <param name="sql">select statement</param>
/// <param name="record">Success:success; Fail:reason</param>
/// <returns>select result</returns>
public DataSet Oracle_Select(string sql, out string record)
{
  try
  {
    DataSet dataSet = new DataSet();
    if (oracle_con != null)
    {
      if (oracle_con.State == ConnectionState.Open)
      {
        OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(sql, oracle_con);
        oracleDataAdapter.Fill(dataSet, "sample");
        oracleDataAdapter.Dispose();
        record = "OK";
        return dataSet;
      }
      if (oracle_con.State == ConnectionState.Closed)
      {
        record = "Database connection closed";
      }
      else if (oracle_con.State == ConnectionState.Broken)
      {
        record = "Database connection is destroyed";
      }
    }
    else
    {
      record = "Please open the database connection first";
    }
    record = "error";
    return dataSet;
  }
  catch (Exception ex)
  {
    DataSet dataSet = new DataSet();
    record = ex.Message.ToString();
    return dataSet;
  }
}

小编发现以上这种封装方式还是很麻烦,每次对Oracle进行增删改查的时候还得先打开数据库,最后还要关闭,实际运用起来比较麻烦。因此对上面两个增删改查的方法进行了重载,在每次进行操作时都先打开数据库,然后关闭数据库。

/// <summary>
/// Oracle insert,delete,update
/// </summary>
/// <param name="sql">insert,delete,update statement</param>
/// <param name="link">link statement</param>
/// <returns>Success:success + Number of affected rows; Fail:reason</returns>
public string Oracle_Insdelupd(string sql, string link)
{
  try
  {
    int num = 0;
    using (OracleConnection oracleConnection = new OracleConnection(link))
    {
      DataSet dataSet = new DataSet();
      oracleConnection.Open();
      OracleCommand oracleCommand = new OracleCommand(sql, oracleConnection);
      num = oracleCommand.ExecuteNonQuery();
      oracleConnection.Close();
      return "success" + num;
    }
  }
  catch (Exception ex)
  {
    return ex.Message.ToString();
  }
}

/// <summary>
/// Oracle select
/// </summary>
/// <param name="sql">select statement</param>
/// <param name="link">link statement</param>
/// <param name="record">Success:success; Fail:reason</param>
/// <returns>select result</returns>
public DataSet Oracle_Select(string sql, string link, out string record)
{
  try
  {
    using (OracleConnection oracleConnection = new OracleConnection(link))
    {
      DataSet dataSet = new DataSet();
      oracleConnection.Open();
      OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(sql, oracleConnection);
      oracleDataAdapter.Fill(dataSet, "sample");
      oracleDataAdapter.Dispose();
      oracleConnection.Close();
      record = "success";
      return dataSet;
    }
  }
  catch (Exception ex)
  {
    DataSet dataSet = new DataSet();
    record = ex.Message.ToString();
    return dataSet;
  }
}

C#学习--Oracle数据库基本操作(连接、增、删、改、查)封装的更多相关文章

  1. Django(十)模型:django模型类对数据库的:增/删/改/查、自关联、管理器、元选项(指定表名)

    一.插入.更新和删除 调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的插入和更新. 调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除. 二.自关联 ...

  2. 怎样从C#中打开数据库并进行 增 删 改 查 操作

    首先 在C#中引用数据库的操作! (因为我们用的是SQLserver数据库,所以是SqlClient) using System.Data.SqlClient; 1:要实现对数据库的操作,我们必须先登 ...

  3. Mysql基本操作语句 增-删-改-查

    增 INSERT INTO 表名(属性名1,属性名2) VALUES(值1,值2) 删 DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子 ...

  4. Java操作MongoDB:连接&增&删&改&查

    1.连接 ①方式一 MongoClientOptions.Builder builder = MongoClientOptions.builder(); //可以通过builder做各种详细配置 Mo ...

  5. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  6. python学习-62 类属性的增 删 该 查

    类属性 1.类属性 类属性又称为静态变量,或者是静态数据.这些数据是与它们所属的类对象绑定的,不依赖于任何类实例. 2.增 删 改 查 class zoo: country = 'china' def ...

  7. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  8. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  9. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

随机推荐

  1. Java EE—最轻量级的企业框架?

    确保高效发展进程的建议 很久以前,J2EE,特别是应用程序服务器被认为过于臃肿和"重量级".对于开发人员来说,使用此技术开发应用程序会非常繁琐且令人沮丧.但是,由于 J2EE 框架 ...

  2. sql 单表distinct/多表group by查询去除重复记录

    单表distinct 多表group by group by 必须放在 order by 和 limit之前,不然会报错 下面先来看看例子: table   id name   1 a   2 b   ...

  3. ORACLE SQL语句练习题

    --1:选择部门30中的所有员工select * from emp where deptno=30--2:列出所有办事员(clerk) 的姓名.编号和部门编号select empno,ename,de ...

  4. java对象排序(Comparable)详细实例

    对象实现Comparable接口 public class Field implements Comparable<Field>{ private String name; private ...

  5. 正则表达式(RegExp)

    前言:先来了解一下基础知识.再细说正则表达式~ 转义字符  ----   \ 转义字符会将与之相邻的字符转换含义. 例如说,希望在一个字符串中输出 “ 号,那么就可以使用在双引号前加入 \ ,这样就能 ...

  6. Fliptile(枚举+DFS)

    Problem Description Farmer John knows that an intellectually satisfied cow is a happy cow who will g ...

  7. Day 10 用户的提权,用户组的创建删除

    1.如何为用户设定密码,又如何修改密码? 2.用户的创建流程? [扩展了解] 3.用户组如何管理? 4.普通用户无权限怎么办? 切换身份 or 提权? su 切换用户 sudo 提权   5.为用户添 ...

  8. Salesforce学习之路-developer篇(一)利用VS Code结合Git开发Salesforce

    Part 1: 从Git中克隆代码到本地 git clone https://github.com/git/git Part 2: 在VS Code中安装Salesforce和Git插件 在VS Co ...

  9. (转)阿里云CentOS 7下配置及使用mysql

    一.安装 1 正确的安装方法: 众所周知,Linux系统自带的repo是不会自动更新每个软件的最新版本(基本都是比较靠后的稳定版),所以无法通过yum方式安装MySQL的高级版本.所以我们需要先安装带 ...

  10. node项目的基本目录结构

    1.public目录: 项目公共目录,存放静态资源(img.js.css)和公共资源,404错误提示页面: 2.routor目录: 路由控制器目录,存放路由文件,将所有的业务逻辑都都写在这里: 3.v ...