-
Oracle 和 Microsoft 均免费提供自己的 Oracle 数据提供程序。
Microsoft 针对 .NET Framework 的提供程序已废弃。
Oracle 则继续支持和开发其 .NET 数据提供程序 Oracle Data Provider for .NET (ODP.NET)。在本文中,我们将使用 ODP.NET,该提供程序包含在 Oracle Database 中或单独下载。 -
ODP.NET 提供标准的 ADO.NET 数据访问,同时还提供专用于 Oracle 数据库的特性,如 XML DB、数据访问性能优化和真正应用集群负载平衡及快速连接故障切换
-
安装 ODP.NET 和 Oracle 客户端软件后,即可进行应用程序开发。在开发前,先确认客户端连通性。可使用 Oracle 自带的 SQL*Plus,测试是否能连接到 Oracle 数据库。
-
tnsnames.ora 文件是一个 Oracle 网络配置文件,它定义用于建立连接的数据库地址。假定我们在 tnsnames.ora 文件中定义了一个数据库别名 OraDb,如下:
OraDb=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=ORASRVR—(主机名))(PORT=1521----(端口号)))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=ORCL(SID值))
)
)
别名,您需要使用以下语法:
string oradb = “Data Source=OraDb;User Id=hr;Password=hr;”; -
如果想修改连接字符串。如下所示:
string oradb = “Data Source=(DESCRIPTION=”
+ “(ADDRESS=(PROTOCOL=TCP)(HOST=主机名)(PORT=端口))”
+ “(CONNECT_DATA=(SERVICE_NAME=SID值)));”
+ “User Id=用户名;Password=密码;”;
通常情况下,连接不同的数据库,主要修改的参数:主机名、端口、SID值、用户名、密码。如果连接数据库失败,首先查看这个五个参数是否正确。 -
连接Orcale代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Oracle.DataAccess.Client;
namespace WinOra
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
string oradb = "Data Source=(DESCRIPTION=(ADDRESS_LIST="
+ "(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.28)(PORT=1521)))"
+ "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcltc)));"
+ "User Id=JS_ONLINE;Password=rfidtc;";//连接字符串
OracleConnection conn = new OracleConnection(oradb);
conn.Open();//连接
OracleCommand cmd = new OracleCommand();//command
cmd.Connection = conn;
cmd.CommandText =
$"select BILL * from mtbill where {tbID.Text}";
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
label1.Text = dr["BILL"].ToString(); ;
}
else
{
label1.Text = "bill not found";
}
dr.Dispose();
cmd.Dispose();
conn.Dispose();
}
catch (OracleException ex)
{
switch (ex.Number)
{
case 1:
MessageBox.Show("Error attempting to insert duplicate data.");
break;
case 12545:
MessageBox.Show("The database is unavailable.");
break;
default:
MessageBox.Show("Database error:" + ex.Message.ToString());
break;
}
}
}
}
}