c#链接oracle 数据库问题
小女新手,用C#链接oracle database总是链接不进去。代码如下:
class Program
{
static void Main(string[] args)
{
string connectionString = " User Id=HR; Password=abcdefg; Data Source=ORCL";
OracleConnection connection = new OracleConnection(connectionString);
connection.Open();
Console.WriteLine("ServerVersion: " + connection.ServerVersion
+ "\nDataSource: " + connection.DataSource);
Console.ReadKey();
}
namespace 里面加了Oracle.DataAccess.Client 和Oracle.DataAccess.Types,
感觉问题应该出在connectionString上面。
用户名和密码是HR,和abcdefg(这个用户名和密码可以登录iSQL*Plus,不知道是不是可以用在这里?
另外,ORCL应该是instance的名字,
通过SQL:
select sys_context('USERENV','INSTANCE_NAME')
from dual;
查到的。
而且在tnsnames.ora文件里面也能看到。
# tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 150.212.4.31)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
不知道这个ORCL是不是应该用在这个data source。
希望大家能帮我看看代码,分析分析~
非常感谢~~ --------------------编程问答-------------------- 你用的是ODP.NET数据提供程序吗?
貌似ORCL的连接字符串不是这样写的,和MS SQL不太一样 --------------------编程问答--------------------
以前写过的连接字符串,这是标准版的,貌似10G和11G版本的可以简写,具体的简写写法可以GOOGLE,不过标准版的适用于任何版本,所以保险点还是用这个吧。
"Password=登录密码;User ID=登录用户名;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=服务器IP地址、主机名)(PORT=端口号;一般默认是1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=数据库实例名;默认是orcl)))" --------------------编程问答-------------------- 项目->添加引用->.NET->System.Data.OracleClient.dll
//首先添加两条引用
using System.Data.OracleClient;
using System.Data;
var connectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
(HOST=150.212.4.31) (PORT=1521)))(CONNECT_DATA=(SERVICE_NAME= orcl)));
User Id=HR; Password=abcdefg"; --------------------编程问答--------------------
// 前几天看到的Oracle万能连接字符串,挺好用的。--------------------编程问答--------------------
string oraclestring = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=你的IP)(PORT=端口))(CONNECT_DATA=(SERVICE_NAME=数据库名)));User Id=用户名;Password=密码";
using (OracleConnection con = new OracleConnection(oraclestring))
using (OracleCommand cmd = new OracleCommand("查询语句", con))
{
con.Open();
Console.WriteLine(cmd.ExecuteScalar());
}
谢谢大家~
这个字符串是不是可以在tnsnames.ora里面找到呢?我好像试过。好像也没有连接上。
谢谢指点。 --------------------编程问答--------------------
谢谢~~我一开始也是试的System.Data.OracleClient这个ADO.NET的inte易做图ce。
不过我运行的时候提示我说.NET 4.0版本这个dll已经要被弃用了。提示说最好用其他的。
于是我就使用了ODP.NET。
--------------------编程问答--------------------
我刚才试了一下你的方法,这个HOST后面是跟什么地址呢。我跟之前装ORACLE DATABASE的Database Control management 地址 150.212.4.31这个地址显示错误是连接超时。
于是我尝试直接登录150.212.4.31em这个地址。无法登录。
我当时安装DATABASE的时候手动设置了静态IP,才装上。不知道是不是跟这个有关系?
后来我又尝试了设置这个HOST地址为我现在电脑连入internet的IP地址。这次错误显示的是无监听程序。
我之前已经用Net Configuration Assistant把监听程序给打开了。
不知道为什么还是这样。
请指教!
补充:.NET技术 , .NET Framework