C#连接oracle

云婼 2019-01-09 05:23:31
平台是VS2013,用odt进行连接或者用引用连接,都显示连接请求超时,网上的办法都试过了,同学说可能是监听器和适配器问题,也没有找到。三个软件都重装过,还是找不到原因。 请大家帮忙看看
...全文
100 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilikeff8 2019-01-09
  • 打赏
  • 举报
回复
引用 5 楼 云婼 的回复:
[quote=引用 1 楼 ilikeff8的回复:]在nuget管理器里下载
Oracle.ManagedDataAccess,
如果要用EF,还要下载
Oracle.ManagedDataAccess.EntityFramework

下载了程序包,不行,还是连接请求超时[/quote]

ls这种直接连接字符串也是可以的

比如我用的是2015,用的这个 ODTforVS2015

https://pan.baidu.com/s/1T-ppQgD1kzpUzEWn76WVBA
提取码: 3wwy

安装完后配置C:\Program Files (x86)\Oracle Developer Tools for VS2015\network\admin\tnsnames.ora


<data source alias> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <hostname or IP>)(PORT = <port>))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <database service name>)
)
)



public LocalEntities()
: base(Functions.GetConnectionString_Remote())
{
}




static public string GetConnectionString_Remote(bool isOnlySqlString = false)
{
return GetOracleConnectionString("Remote", isOnlySqlString);
}


static string GetOracleConnectionString(string name, bool isOnlyOracleString = false)
{
Configuration configuration = OpenCustomConfigFile();
Oracle.ManagedDataAccess.Client.OracleConnectionStringBuilder oracleConnectionStringBuilder = new Oracle.ManagedDataAccess.Client.OracleConnectionStringBuilder();

oracleConnectionStringBuilder.DataSource = GetConfigValue(configuration, "DataSource_" + name);
oracleConnectionStringBuilder.UserID = GetConfigValue(configuration, "UserID_" + name);
oracleConnectionStringBuilder.Password = Decrypt(GetConfigValue(configuration, "Password_" + name));

if (isOnlyOracleString)
{
return oracleConnectionStringBuilder.ToString();
}

EntityConnectionStringBuilder entityConnectionStringBuilder = new EntityConnectionStringBuilder();
entityConnectionStringBuilder.Provider = "Oracle.ManagedDataAccess.Client";
entityConnectionStringBuilder.ProviderConnectionString = oracleConnectionStringBuilder.ToString();
entityConnectionStringBuilder.Metadata = string.Format("res://*/Model.EFModel_{0}.csdl|res://*/Model.EFModel_{1}.ssdl|res://*/Model.EFModel_{2}.msl", name, name, name);

return entityConnectionStringBuilder.ToString();
}





圣殿骑士18 2019-01-09
  • 打赏
  • 举报
回复
我用配置tnsname.ora的方式,没搞成功。后来用Oracle.ManagedDataAccess搞成了,而且也不用ora配置。最后的连接串是:

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xx.xx.xx.xx)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sforacle)));User Id=test;Password=xxxx;
云婼 2019-01-09
  • 打赏
  • 举报
回复
说错了,是odp,说成odt了,在oracle官网下载的
云婼 2019-01-09
  • 打赏
  • 举报
回复
引用 1 楼 ilikeff8的回复:
在nuget管理器里下载
Oracle.ManagedDataAccess,
如果要用EF,还要下载
Oracle.ManagedDataAccess.EntityFramework
下载了程序包,不行,还是连接请求超时
ilikeff8 2019-01-09
  • 打赏
  • 举报
回复
哦对了,你是直接用odt,我是用odp.net,所以netget里下载那2个

再去java官网下载oracle对应版本的odac and odt,装机器上
ODAC 12.2c Release 1 and Oracle Developer Tools for Visual Studio

然后去对应的目录下配置tnsnames

C# 连接Oracle(利用ODP.net,不安装oracle客户端)
我不懂电脑 2019-01-09
  • 打赏
  • 举报
回复
要先安装orace客户端,然后看客户端连接正常不,再用vs调试
ilikeff8 2019-01-09
  • 打赏
  • 举报
回复
连接的话,要配置odt的tnsnames.ora,而不是其他什么oracle客户端的tnsnames.ora
ilikeff8 2019-01-09
  • 打赏
  • 举报
回复
在nuget管理器里下载
Oracle.ManagedDataAccess,
如果要用EF,还要下载
Oracle.ManagedDataAccess.EntityFramework

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧