甲方提供给我一个Oracle数据库的视图,提供了连接必要的数据
结果我可以用Oracle客户端连接远程的数据库,但是我的.Net(c#)却连接不上
报的错是:System.Data.OracleClient.OracleException (0x80131938): ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
我的连接代码是:
string connString = "User ID=userid;Password=userpassword;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 服务器IP)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = sid)))";
            string queryString = "SELECT * FROM V_JZGJBXX";
            OracleConnection conn = new OracleConnection(connString);
            conn.Open();

结果就报了上面的错误,网上说是监听服务的问题,但是我客户端能连接上,我觉得应该不是监听的问题吧,如果是监听的问题也应该是数据库服务器那边的监听没有写好吧?
Oracle刚入门,还请高手前来指点,多谢了!

解决方案 »

  1.   

    对应修改下你的连接吧 serveice_name=orcldb1
    还不行的话,可以试试把serveice_name 改为sid,你上面的连接使用的sid
      

  2.   

    还有HOST = 服务器IP,这个“服务器ip” 你连接串里也这么写的吗?userid 和userpassword是变量吗?,字符串需要拼接的,直接这样写里面肯定不行"User ID=" + userid + ";Password=" + userpassword + ";……"
      

  3.   

    抱歉,我没有说明一下,我字符串里面的数据跟客户端是一致的,我只是后来发帖的时候稍做了修改,我程序里面就是SERVICE_NAME = orcldb1的
      

  4.   

    "data source= " & Chr(34) & SeverAddress & Chr(34) & ";"
    连接串前后都加引号,另外试下sid行不行
      

  5.   

    Me.M_myconn.ConnectionString = "Provider=MSDAORA.1;password=" & Password & ";user id=" & ID & ";data source= " & Chr(34) & SeverAddress & Chr(34) & ";persist security info=True "上面是oledb方式连接串的生成方式,oracle连接设置方式应该差不多
      

  6.   

    我的字符串格式应该是没有问题的,下面是我连本机oracle的字符串,能连接成功获取数据的:
      

  7.   

    我已经找到原因了,不过还是很感谢大家为我提供了那么多的建议。
    我的连接数据库的语句中最后有一个SERVER_NAME,我当时给的赋值是sid
    正确的是 SERVER_NAME = 数据库服务名 或者 SID = 数据库实例名
    希望也能为大家提供帮助!