如何使用我拥有的信息连接到oracle?

时间:2010-12-14 15:16:23

标签: asp.net sql-server-2005 oracle

我从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”

3 个答案:

答案 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代码片段,查询以及打破位置