1、使用必要条件
1) 安装Microsoft Visual Studio 2017或更高版本。
2) 安装Oracle Database 12c或更高版本。
2、ODP.NET Core安装配置
在Nuget管理程序中,搜索'Oracle.ManagedDataAccess.Core' =》选中然后点击'安装'。
相关文档:VS(Visual Studio)中Nuget的使用
3、ODP.NET Core连接配置使用代码
1) 连接字符串配置代码
// 示例演示了如何使用ODP.NET Core配置API
// 添加连接描述符和网络服务名称条目
OracleConfiguration.OracleDataSources.Add("orclpdb", "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname or IP>)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=<service name>)(SERVER=dedicated)))");
OracleConfiguration.OracleDataSources.Add("orcl", "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname or IP>)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=<service name>)(SERVER=dedicated)))");
// 设置所有连接使用的默认语句缓存大小
OracleConfiguration.StatementCacheSize = 25;
// 默认情况下禁用自调优
OracleConfiguration.SelfTuning = false;
// 按名称绑定所有参数
OracleConfiguration.BindByName = true;
// 将默认超时设置为60秒
OracleConfiguration.CommandTimeout = 60;
// 设置默认获取大小为1 MB
OracleConfiguration.FetchSize = 1024 * 1024;
// 设置跟踪选项
OracleConfiguration.TraceOption = 1;
OracleConfiguration.TraceFileLocation = @"D:\traces";
// 取消下面的注释可以生成跟踪文件
//OracleConfiguration.TraceLevel = 7;
// 设置网络属性
OracleConfiguration.SendBufferSize = 8192;
OracleConfiguration.ReceiveBufferSize = 8192;
OracleConfiguration.DisableOOB = true;
2) 操作oracle数据库代码
app.Run(async (context) =>
{
//Demo: ASP.NET Core的基本ODP.NET核心应用程序
// 连接,查询和返回结果到网页
//创建到Oracle的连接
string conString = "User Id=hr;Password=<password>;" +
//如何连接到Oracle数据库没有SQL*Net配置文件
// 也称为tnsnames.ora
"Data Source=<ip or hostname>:1521/<service name>;";
//如何使用DB别名连接到Oracle DB
//Uncomment below and comment above.
//"Data Source=<service name alias>;";
using (OracleConnection con = new OracleConnection(conString))
{
using (OracleCommand cmd = con.CreateCommand())
{
try
{
con.Open();
cmd.BindByName = true;
//使用该命令显示员工姓名
// EMPLOYEES表
cmd.CommandText = "select first_name from employees where department_id = :id";
// 将ID分配给部门号50
OracleParameter id = new OracleParameter("id", 50);
cmd.Parameters.Add(id);
//执行命令并使用DataReader显示数据
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
await context.Response.WriteAsync("Employee First Name: " + reader.GetString(0) + "\n");
}
reader.Dispose();
}
catch (Exception ex)
{
await context.Response.WriteAsync(ex.Message);
}
}
}
});