Oracle官方的托管数据库访问组件,单DLL,Oracle.ManagedDataAccess.dll,不安装Oracle客户端,不区分32/64位, 直接引用即可。

与非托管程序为Oracle.DataAccess.dll相比,不支持BulkCopy和CustomType等。

 

下载

​https://www.oracle.com/database/technologies/odac-downloads.html​

或者

nuget

 

文档

​https://docs.oracle.com/cd/E11882_01/win.112/e23174/toc.htm​

ManagedDataAccess连数据库_User

 

 

 类介绍

OracleCommand

OracleCommandBuilder

OracleConnection

OracleDataAdapter 

OracleDatabase 

OracleDataReader

OracleError 

OracleErrorCollection

OracleException

OracleInfoMessageEventArgs

OracleParameter 

OracleParameterCollection

OraclePermission

OraclePermissionAttribute

OracleRowUpdatedEventArgs

OracleRowUpdatingEventArgs

OracleTransaction

 

DataSet接收

DataSet ds = new DataSet();
string str = @"Data Source=xxx:1521/orcl; User Id=xxx; password=xxx;Pooling=false";
string sql = "select * from T_MD_SCALE";
try
{
using (OracleConnection conn = new OracleConnection(str))
{
conn.Open();
if (conn.State == ConnectionState.Open)
{
OracleDataAdapter da = new OracleDataAdapter(sql, conn);
da.Fill(ds, "ds");
}
//测试
Console.ReadKey();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

 获得某个表的列名和类型

static void Main(string[] args)
{
DataSet ds = new DataSet();
string str = @"Data Source=xxx:1521/orcl; User Id=xxx; password=xxx;Pooling=false";
string sql = "select * from T_MD_SCALE";
try
{
using (OracleConnection conn = new OracleConnection(str))
{
conn.Open();
if (conn.State == ConnectionState.Open)
{
OracleCommand cmd = new OracleCommand(sql, conn);
OracleDataReader reader = cmd.ExecuteReader();
for (int i = 0; i < reader.FieldCount; i++)
{
//
Console.WriteLine("列名是:"+reader.GetName(i));
Console.WriteLine("该列类型:" + reader.GetFieldType(i));
Console.WriteLine("-----------------------------");
}
}
//测试
Console.ReadKey();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}

 获取表的架构

static void Main(string[] args)
{
DataSet ds = new DataSet();
string str = @"Data Source=192.166.208.52:1521/orcl; User Id=IMES_PMS1; password=pms1;Pooling=false";
string sql = "select * from T_MD_SCALE";
try
{
using (OracleConnection conn = new OracleConnection(str))
{
conn.Open();
if (conn.State == ConnectionState.Open)
{
OracleCommand cmd = new OracleCommand(sql, conn);
OracleDataReader reader = cmd.ExecuteReader();
//架构
DataTable dt = reader.GetSchemaTable();
}
//测试
Console.ReadKey();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}

 

ManagedDataAccess连数据库_User_02

配合上查询数据库的所有表名

select * from tab

ManagedDataAccess连数据库_Source_03

 

 

就可以自定义生成model和dal了