首页 > 数据库 >C#和Oracle的交互

C#和Oracle的交互

时间:2023-08-21 19:33:23浏览次数:27  
标签:Console C# System course Oracle using 交互 conn

1. 安装Oracle,略。

2. (非必要,全局用户也可)在sys下创建用户并授权session、create table, create tablespace, create view, unlimited tablespace。

3. 在Visual Studio 创建项目,并将Oracle本地目录下的文件 Oracle.DataAccess.dll 复制到项目的 exe所在目录下(bin/Debug/*)。

4. 调试->添加引用->浏览->找到Oracle.DataAccess.dll 选中然后勾选 确定。然后就可以在项目中 using Oracle.DataAccess.Client 了。

 

数据表的定义:

我的数据表定义为

-- create table
CREATE TABLE COURSE
(
    course_id   number(4) primary key,
    course_name VARCHAR2(16) NOT NULL,
    course_subject VARCHAR2(16) NOT NULL
)

其中 course_id 有一个通过Trigger 定义的 Sequence 作为自增主键约束。

C#程序:

using Oracle.DataAccess.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OracleCommands
{
    class Program
    {
        #region connect to oracle datebase
        public static string ConnectString =
            "Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =127.0.0.1)(PORT =1521))" +
            " (CONNECT_DATA = (SID=****))); User Id=****;Password=****;";  // 这里填写你自己的SID、User Id、Password

        public static OracleConnection DBConn()
        {
            OracleConnection conn;
            conn = new OracleConnection(ConnectString);
            try
            {
                conn.Open();

                string sql = "SELECT * FROM course";
                using (OracleCommand comm = new OracleCommand(sql, conn))
                {
                    using (OracleDataReader rdr = comm.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            Console.WriteLine(rdr.GetString(1));  // varchar(16)字段
                        }
                    }
                }

                Console.WriteLine("Connect and Read Success.");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return null;
            }
            finally
            {
                conn.Close();
            }
            return conn;
        }
        #endregion
        static void Main(string[] args)
        {
            DBConn();
            Console.ReadKey();
        }
    }
}

end。

标签:Console,C#,System,course,Oracle,using,交互,conn
From: https://www.cnblogs.com/zhaoke271828/p/17646847.html

相关文章

  • c2工具sliver 执行木马命令后会弹窗一闪而过
    向木马发出指令后,如果是cmd命令会有一个黑窗口一闪而灭,不利于木马隐藏,需要将executeHandler从handlers.go拷贝到handlers_windows.go里,核心代码为cmd.SysProcAttr=&syscall.SysProcAttr{HideWindow:true}表示隐藏命令弹窗funcexecuteHandler(data[]byte,respRPCRe......
  • Spring Cloud微服务网关Gateway组件
    网关简介大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去用。  这样的架构,会存在着诸多的问题:每个业务都会需要鉴权、限流、权限校验、跨域等逻......
  • mysql replace && insert && update && delete
    目录mysqlreplace&&insert&&update&&deletereplacemysqlreplace&&insert&&update&&deletereplace我们在使用数据库时可能会经常遇到这种情况。如果一个表在一个字段上建立了唯一索引,当我们再向这个表中使用已经存在的键值插入一条记录,那将会抛出一个主键冲突的......
  • CF1762E Tree Sum 题解
    题意对于一棵\(n\)个节点的树\(T\),定义\(\operatorname{good}(T)\)为真当且仅当边权\(w\in\left\{-1,1\right\}\)且对于任意节点\(u\),均有\(\displaystylef(u)=\prod\limits_{\left(u,v\right)\inE}w\left(u,v\right)=-1\)。求\[\sum\limits_{\operat......
  • c2工具sliver的python客户端无法修改grpc超时时间的解决办法
    业务需要,调用了很多implants来执行对应系统上的命令,但是无论怎么指定interactive.py中execute方法参数,命令执行超时时间总是30.后面通过扩展execute方法增加一个grpc超时参数后解决;具体方法如下:asyncdefexecute_ex(self,exe:str,args:List[str],output:bool,tim......
  • conda init 导致的 powershell 启动缓慢的问题(Loading personal and system profiles
    文章目录一、问题描述二、问题溯源三、解决方案3.1测试3.2方案一:不在powershell中使用conda3.2方案二:需要时再在powershell中使用conda(推荐)四、powershell7特点一、问题描述powershell启动缓慢:每次启动都会加载很久的配置文件:Loadingpersonalandsystemprofilestookxxx......
  • JavaScript基础之基于数据类型和引用数据类型
    数据类型JavaScript的数据类型有7中,包括6个基本类型和一个引用类型基本数据类型:number,string,boolean,null,undefined,symbol引用数据类型:object(数组、对象、函数、正则等)基本数据类型和引用数据类型的区别存储方式基本类型:基本数据类型的值直接存储在改变量所分配的内存......
  • TypeScript使用技巧
    文章目录使用技巧TypeScript内置的工具类型keyofextends限定泛型interface与type区别TypeScript作为JavaScript的超集,通过提供静态类型系统和对ES6+新特性的支持,使JavaScript开发变得更加高效和可维护。掌握TypeScript的使用技巧,可以帮助我们更好地开发和组织JavaScript项......
  • react class与hooks区别
    在React中,有两种主要的方式来管理组件的状态和生命周期:Class组件和Hooks。Class组件:Class组件是React最早引入的方式,它是基于ES6class的语法来创建的。Class组件包含了生命周期方法,可以用来处理组件的状态、副作用等。以下是一些Class组件的特点和生命周期方法:特点:使......
  • 轻松掌握图像处理技能,Python OpenCV库带你飞
    所有代码需要在安装了OpenCV库的Python环境中运行。1图像基础操作importcv2ascvimg=cv.imread("./img/run.png",flags=cv.IMREAD_COLOR)print(img)[[[255255255][255255255][255255255]...[255255255][255255255][255255255]]......