测试环境:
vs2010
Oracle11g
Windows7
1. 准备工作:
tnsnames.ora文件的配置(在oracle_home/NETWORK/ADMIN目录下):
# tnsnames.ora Network Configuration File:D:\app\lenovo\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
.注意:我是在本机测试的,如果你是客户端,将host改为服务器端的ip
C#实现代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OracleClient;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
string[] table;
int i = 0;
public Form1()
{
table = new string[200];
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//连接串
string ConnectionString = "Data Source=ORCL;user=scott;password=tiger";
//创建一个新连接
OracleConnection conn = new OracleConnection(ConnectionString);
try
{
conn.Open();
OracleCommand cmd =conn.CreateCommand();
cmd.CommandText = "selectename from emp";
//创建一个OracleDateReader对象
OracleDataReader odr =cmd.ExecuteReader();
while (odr.Read())
{
table[i] = string.Format("{0}\r\n",odr.GetOracleString(0).ToString());
Console.WriteLine(table[i]);
i++;
}
odr.Close();
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
//throw;
}
finally
{
//关闭连接
conn.Close();
}
}
}
}
这里省略掉了框架的代码,就是一个简单的框架上面有一个按钮,给按钮添加一个点击事件
这里的data source=orcl 这个orcl就是上面配置文件中的orcl,根据这个orcl得到相关协议,地址,以及端口号,然后连接到oracle数据库
注意:
连接oracle时使用的是.net框架的System.Data.OracleClient.dll组件,但是安装的vs默认使用的轻量级框架.NET Framework 4 Client Profile,省略了很多组件,包括System.Data.OracleClient.dll,所以需要将目标框架换为.NETFramework 4(在项目属性,应用程序中的目标框架选项进行切换)