我从oracle DBA获得以下信息,并希望从.net应用程序连接到oracle。我刚刚完成为windows / .net安装oracle工具/驱动程序,现在想要一个控制台应用程序来连接oracle DB并从oracle中提取数据到SQL服务器。
另一个解决方案是让SQL Server从oracle中提取bug表中的所有记录。我不知道oracle连接字符串是什么,并试图创建一个系统DSN但在转向SO大师之前就失败了......
ORACLE SQL用户名是'USER_dev', 密码是'welcome'。
连接字符串是 “JDBC:汞:预言://qct-ds2-p.apps.com:1139; SID = QCTRP1”
答案 0 :(得分:1)
我很幸运,发现了一个简单的解决方案,它都在.net中,只需要通过连接字符串的语法。所有.ora内容都显示在连接字符串中并且运行良好。
static void getData()
{
string connectionString = GetConnectionString();
using (OracleConnection connection = new OracleConnection())
{
connection.ConnectionString = connectionString;
connection.Open();
//Console.WriteLine("State: {0}", connection.State);
//Console.WriteLine("ConnectionString: {0}", connection.ConnectionString);
OracleCommand command = connection.CreateCommand();
string sql = "SELECT * FROM BUG";
//string sql = "SELECT table_name FROM user_tables";
command.CommandText = sql;
OracleDataReader reader = command.ExecuteReader();
while (reader.Read())
{
//string myField = (string)reader["Project"];
string myField = (string)reader[0];
Console.WriteLine(myField);
}
}
}
static private string GetConnectionString()
{
return "User Id=USER_dev;Password=welcome;Data Source=(DESCRIPTION=" +
"(ADDRESS=(PROTOCOL=TCP)(HOST=111.123.479.24)(PORT=1139))" +
"(CONNECT_DATA=(SID=QCTRP1)));";
}
答案 1 :(得分:0)
进入您的ORACLE_HOME \ network \ admin目录。创建一个名为tnsnames.ora的文件(如果它已经存在)。将其添加到其中:
QCTRP1.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = qct-ds2-p.apps.com)(PORT = 1139))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = QCTRP1)
)
)
我在这里做了一些假设......
qct-ds2-p.apps.com解决了吗? 看起来像DBA在端口1139上设置了监听器...默认通常是1521,所以你需要确认。
然后您可以按如下方式设置连接字符串:
Connection conn = DriverManager.getConnection
("jdbc:oracle:oci8:@QCTRP1.WORLD", "dev", "welcome");
答案 2 :(得分:0)
既然您拥有从@erbsock创建的tnsnames,您将需要获得.net端 工作的事情。 Oracle提供了几个可以帮助您解决此问题的教程。
当您安装Oracle ODP(在链接中,您将看到示例和下载)驱动程序时,您将获得在 %ORACLE_HOME%\ odp.net \样品\ 4 \数据集\ DSPopulate \ SRC (这似乎与位于@ http://www.oracle.com/technology/sample_code/tech/windows/odpnet/DSPopulate/ViewProducts.cs.html)
的示例相同作为初始测试,我建议只更改id / passwrd / sql / etc并尝试一下。
与使用System.Data不同根本不同;但是有一些问题并且记住每台计算机都需要安装ODP / Oracle客户端才能使它们与ora连接一起工作。
如果您有任何问题,请发布显示的确切错误消息,以及建立连接的.net代码片段,查询以及打破位置