我有一个HOSTNAME =主机名,SID = sid和PORT =为我的ORACLE数据库连接指定的端口。
我已使用SQL Developer成功连接到此数据库。我现在想做的是连接到我的C#应用程序中的同一个数据库。我怎样才能做到这一点?我该如何为SQLConnection实例指定连接字符串?
到目前为止,我得到了这个代码(变量:hostname,sid,port,username和password都是字符串,与SQL Developer中的相应字段完全相同):
String dataSourceFormat = String.Format(@"{0}\{1},{2}", hostname, sid, port);
DbConnectionStringBuilder conStr = new SqlConnectionStringBuilder()
{
DataSource = dataSourceFormat,
UserID = username,
Password = password,
};
DBConnection con = new SqlConnection(conStr.ConnectionString);
con.Open();
打开连接时,我总是得到相同的错误“与服务器成功建立连接,但在登录过程中发生错误。(提供者:TCP提供者,错误:0 - 强制关闭现有连接由远程主机。)“。为什么连接在SQL Developer中有效,但在我的应用程序中却没有?
[编辑] 我也尝试过使用OracleConnection实例:
String dataSourceFormat = String.Format(@"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = {0})(PORT = {1})))(CONNECT_DATA =(SID = {2})))", hostname, port, sid);
DbConnectionStringBuilder conStr = new OracleConnectionStringBuilder()
{
DataSource = dataSourceFormat,
UserID = username,
Password = password,
};
DBConnection con = new OracleConnection(conStr.ConnectionString);
con.Open();
但它会导致另一个错误:“System.Data.OracleClient需要Oracle客户端软件版本8.1.7或更高版本”。