一、数据库驱动
oracle为c#提供了两种驱动:Oracle.DataAccess.dll与Oracle.ManagedDataAccess.dll
采用Oracle.ManagedDataAccess.dll
Oracle.DataAccess.dll需要使用到数据库客户端的dll。通常情况下本地Oracle客户端是64位,如果项目是32位的,那么就会出现32位和64位不兼容的问题。使用Oracle.ManagedDataAccess.dll,可采用无客户端连接的方式,只需要通过Nuget下载即可。
二、通过字符串配置
列出了部分支持的连接字符串属性:
字符串连接属性 | 描述 | 默认值 |
Connection Lifetime | 连接的最短使用寿命(以秒为单位)。 | 0 |
Connection Timeout | 等待池中的空闲连接的最短时间(以秒为单位)。 | 15 |
Context Connection | 如果设置为true,则返回隐式数据库连接。仅在.NET存储过程中受支持 | false |
Data Source | 连接数据库的属性,如HOST、PORT | null |
DBA Privilege | 权限:SYSDBA 或SYSOPER | null |
Max Pool Size | 池中的最大连接数。 | 100 |
User Id | Oracle用户名 | null |
Password | 指定用户id的密码 | null |
Pooling | 连接池 | true |
全部支持的字符串连接属性可参考oracle文档:https://docs.oracle.com/database/121/ODPNT/featConnecting.htm#ODPNT164
using System;
using Oracle.ManagedDataAccess.Client;
namespace demo
{
class Program
{
public static void Main(String[] args)
{
//连接本地数据库 地址为127.0.0.1:1521 服务名为ORCL
string config = @"Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORCL)));User Id=scott;Password=123456;";
//连接池
// var pool = @"Min Pool Size = 10; Connection Lifetime = 100000; Connection Timeout = 60;
//Incr Pool Size=5; Decr Pool Size=2;";
// config += pool;
OracleConnection conn = new OracleConnection(config);
conn.Open();
Console.WriteLine("---------------连接到数据库---------------");
conn.Clone();
Console.WriteLine("---------------关闭数据库连接---------------");
Console.WriteLine("输入任意键结束");
Console.ReadKey();
}
}
}