悉野小楼

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

c#不安装Oracle客户端连接Oracle

本文所讲的连结oracle是用的.net自带的System.Data.OracleClient (.net 3.5 2.0 添加引用后有, 4.0不再有了) 就是复制dll, 连结串写完整.

 View Code

复制代码
 
using System.Data;
using System.Data.OracleClient;

/// <summary>
        
/// 执行查询语句,返回DataSet
        
/// </summary>
        
/// <param name="SQLString">查询语句</param>
        
/// <returns>DataSet</returns>
        public static DataSet Query(string connectionString, string SQLString)
        {
            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                DataSet ds = new DataSet();
                try
                {
                    connection.Open();
                    OracleDataAdapter command = new OracleDataAdapter(SQLString, connection);
                    command.Fill(ds, "ds");
                }
                catch (OracleException ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    if (connection.State != ConnectionState.Closed)
                    {
                        connection.Close();
                    }
                }
                return ds;
            }
复制代码

1.到oracle官网下载oracle client instant解压后的dll来复制到你的exe文件夹中.( instantclient-basic-nt-11.2.0.2.0.zip 支持多国语言, instantclient-basiclite-nt-11.2.0.2.0.zip 只支持英文, 高版本的oracle client可连结低版本的oracle)

   (或者如果你本机安装个oracle客户端, 可以在oracle客户端文件夹搜索下*oci*.dll(oci是oracle call interface)文件, 搜索的全部dll复制到你的exe文件夹中, 网上常的复制dll就是这几个dll吧)

2.连结字符串要写成(可以写到配置文件中的, 就是要写直实的地址, 端口,实例,用户名,密码)

private static string CONNECTION_STRING =
"User Id=myUserID;Password=myPassword;Data Source=(DESCRIPTION=" +
"(ADDRESS=(PROTOCOL=TCP)(HOST=myserver.server.com)(PORT=yourPort#))" +
"(CONNECT_DATA=(SID=yourSID)));";

这样就不用去读取安装客户端的tnsnames.ora中配置了 

 

注意: 在编程, 要把刚上面的dll放到你的debug或release目录下, 就是与exe文件同目录, 不然找不到文件, 各种出错.

参见: 

 Instant Oracle Using C#

posted on   悉野  阅读(1890)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示