C#连接oracle 平台是VS2013,用odt进行连接或者用引用连接,都显示连接请求超时,网上的办法都试过了,同学说可能是监听器和适配器问题,也没有找到。三个软件都重装过,还是找不到原因。请大家帮忙看看 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在nuget管理器里下载Oracle.ManagedDataAccess,如果要用EF,还要下载Oracle.ManagedDataAccess.EntityFramework 连接的话,要配置odt的tnsnames.ora,而不是其他什么oracle客户端的tnsnames.ora 要先安装orace客户端,然后看客户端连接正常不,再用vs调试 哦对了,你是直接用odt,我是用odp.net,所以netget里下载那2个再去java官网下载oracle对应版本的odac and odt,装机器上ODAC 12.2c Release 1 and Oracle Developer Tools for Visual Studio 然后去对应的目录下配置tnsnamesC# 连接Oracle(利用ODP.net,不安装oracle客户端) 说错了,是odp,说成odt了,在oracle官网下载的 我用配置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; 下载了程序包,不行,还是连接请求超时ls这种直接连接字符串也是可以的比如我用的是2015,用的这个 ODTforVS2015https://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(); } 都说C#里一切皆为对象,既然如此为什么还会有装箱呢? 高手求解 怎样使比自己屏幕小的截屏显示在自己屏幕中间! 如何开始一个线程? 我是菜鸟,想问如何实现双面打印功能? C#中MDI的问题! vs.net2003中 CS文件和DLL文件的麻烦! panel初始时,代码循环给其逐行加label导致闪烁! 程序不能持续运行 名字空间问题 关于PrintDocument点击打印预览再按打印之后出现的问题,关闭了打印预览界面之后,再按直接打印就出现如图报错 用VS2015写razor页面遇到添加where查询条件不报错但查不出结果
Oracle.ManagedDataAccess,
如果要用EF,还要下载
Oracle.ManagedDataAccess.EntityFramework
ODAC 12.2c Release 1 and Oracle Developer Tools for Visual Studio 然后去对应的目录下配置tnsnamesC# 连接Oracle(利用ODP.net,不安装oracle客户端)
提取码: 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();
}