【问题标题】:Oracle.DataAccess.Client not seeing tables but same query in Toad doesOracle.DataAccess.Client 看不到表,但 Toad 中的相同查询可以
【发布时间】:2016-02-11 06:45:12
【问题描述】:

如果我编写一个简单的查询,例如“SELECT * FROM r56.Pets;”在 Toad 中返回结果。如果我使用 Oracle.DataAccess.Client 在我的 c# 应用程序中使用相同的登录名执行相同的查询,我会收到错误“ORA-00942 视图表不存在”

在 toad 中工作的连接是 11g。

using Oracle.DataAccess.Client; 

string ConnectionString = "UserId=username;Password=password;Data Source=dbname.domain.com;";


        DataTable dt = new DataTable();
        using (OracleConnection conn = new OracleConnection())
        {
            try
            {
                conn.ConnectionString = DbTools.GetConnectionString("oracle");
                conn.Open();

                OracleDataAdapter oraAdapt = new OracleDataAdapter(qry, conn);
                oraAdapt.Fill(dt);

                return dt;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                conn.Close();
                return null;
            }

base    {Oracle.DataAccess.Client.OracleConnection} System.Data.Common.DbConnection {Oracle.DataAccess.Client.OracleConnection}
    ConnectionString    "User Id=username;Data Source=dbname.domain.com;"   string
    ConnectionTimeout   15  int
    ConnectionType  Oracle  Oracle.DataAccess.Client.OracleConnectionType
    Database    ""  string
    DatabaseDomainName  "domain.com"    string
    DatabaseName    "dbname"    string
    DataSource  "dbname.domain.com" string
    HostName    "host"  string
    InstanceName    "dbname"    string
    LogicalTransactionId    null    byte[]
    OracleLogicalTransaction    null    Oracle.DataAccess.Client.OracleLogicalTransaction
    ServerVersion   "11.2.0.4.0"    string
    ServiceName "sys$users" string
    State   Open    System.Data.ConnectionState
    StatementCacheSize  30  int

【问题讨论】:

  • 在调试器中检查conn.ConnectionStringqry 的运行时值。它们与您在 Toad 中使用的匹配吗?当您连接到特定架构时,您可以在查询中省略架构名称。
  • 对我来说似乎是一样的。我可以连接一个类似的数据库并很好地查询,只是不在这个模式中。前几天我必须被授予查看 Toad 中表的权限,但 C# 应用程序似乎看不到这些表,即使它使用的是我在 Toad 中使用的相同登录名。是的,查询是一样的。
  • 它必须与包含我需要访问的表的架构有关。我在同一个数据库上使用了不同的架构,并且能够成功查询。
  • 如果我在查询中使用 shema 名称,它在 c# 应用程序中总是会失败。如果我在没有模式名称的情况下查询我需要“r65”模式的表,则找不到它。太令人沮丧了。

标签: c# oracle oracle11g


【解决方案1】:

我可以通过向我的 FROM 子句添加更多信息来解决这个问题:

SELECT DISTINCT * FROM SCHEMA.TABLE@Database.domain.COM

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多