在.net中:工具-〉连接到数据库
用户名称:system
密码:    manager
服务器名:OracleDB可连接成功。但以下程序运行时有问题:string strCnn = "Data Source=OracleDB;User Id='system';Password=manager;Integrated      Security=no;"; 
OracleConnection cnn = new OracleConnection(strCnn);string strSql = "Select * From dept";
OracleCommand cmm = new OracleCommand(strSql, cnn);try
{
cnn.Open();
OracleDataAdapter ad = new OracleDataAdapter(cmm);
DataSet ds = new DataSet();
ad.Fill(ds);
}
catch (Exception e)
{
Console.Write(e.Message);
Console.Read();
}
finally
{
cnn.Close();
}
异常信息为:ORA-12154:TNS:无法处理服务名
是什么原因?

解决方案 »

  1.   

    OracleConnection oc=new OracleConnection("data source=ccserver;User Id=cym1;Password=cym");
    OracleDataAdapter oda=new OracleDataAdapter("select id,name  from cym1.specialist where id<100",oc);
    DataSet ds=new DataSet();
    oda.Fill(ds);
    comboBox1.DataSource=ds.Tables[0];
    comboBox1.DisplayMember=ds.Tables[0].Columns[1].ColumnName;
    comboBox1.ValueMember=ds.Tables[0].Columns[0].ColumnName;
      

  2.   

    你可以直接用.net环境下建立数据库连接(测试成功后),然后在程序中使用,这样问题比较少一点。
      

  3.   

    用OLEDBCollection控件连接吧.问题少一些.
      

  4.   

    哪一行出错?在ORACLE中,Data Source指的示ORACLE服务的名字,而不是机器名
      

  5.   

    回复人: earlsen(深蓝--没有做不到,只有想不到) ( ) 信誉:98  2005-03-24 19:32:00  得分: 0  
     
     
       OracleConnection oc=new OracleConnection("data source=ccserver;User Id=cym1;Password=cym");
    OracleDataAdapter oda=new OracleDataAdapter("select id,name  from cym1.specialist where id<100",oc);
    DataSet ds=new DataSet();
    oda.Fill(ds);
    comboBox1.DataSource=ds.Tables[0];
    comboBox1.DisplayMember=ds.Tables[0].Columns[1].ColumnName;
    comboBox1.ValueMember=ds.Tables[0].Columns[0].ColumnName;  
     
    哈哈我自己都找不到了,
    楼上那位兄弟还能找到,
    感动
      

  6.   

    OracleConnection oc=new OracleConnection("data source=服务名”;User Id=用户;Password=密码");这样是对的,还有就是你看看服务是不是都起来了,正常情况下应该启动这样几个;OracleServiceOracleDB     也就是你的服务名,而不是服务器名。OracleOraHome92TNSListenerOracleOraHome92HTTPServerOracleOraHome92AgentOracleMTSRecoveryService而且你最好自己建表,再建用户,赋角色、权限。在.net里面使用。
      

  7.   

    OracleDB是我在安装Oracle时,数据库文件夹的名称,登陆SQL*Plus要输入的。
    LS是计算机名。Data Source = OracleDB,
    Data Source = LS,
    Data Source = localhost,
    我都试了,都是在cnn.Open()那里出现异常:ORA-12154:TNS:无法处理服务名。在.net中通过“工具-〉连接到数据库”可连接成功,OracleOraHome92TNSListener
    OracleOraHome92HTTPServer
    OracleOraHome92Agent
    OracleMTSRecoveryService
    这些服务我都开了,但运行时就是出现异常,
    在cnn.Open()那里出现异常:ORA-12154:TNS:无法处理服务名。
      

  8.   

    难道你没开 OracleServiceOracleDB
      

  9.   

    开了
    OracleOraHome92TNSListener
    OracleOraHome92HTTPServer
    OracleOraHome92Agent
    OracleServiceOracleDB,是不是还有其他设置,
    我只装了服务器,未装客户端,是不是还要装客户端
      

  10.   

    NTFS权限的问题吧.
    你把IIS跟ORACLE服务器分开就应该没问题了.重新设置一下ORACLE目录下一个目录的权限,忘了哪一个了.你查一下
      

  11.   

    安装oracle客户端,然后在net administration中配置本地服务名这个服务名就是连接串中的data source
      

  12.   

    问题解决了,谢谢大家。
    (1) Data Source='OracleDB'应为Data Source=OracleDB;
    (2) 我建立的是C#控制台程序,项目名称为XMLADO,由于代码版本更新,我将XMLADO文件夹直接更名为了XMLADO(0.1)。在连接SQL Server 与 Access 时不会出错,但Oracle会出错。