【问题标题】:Oracle: How to allow leading/trailing spaces in ODP.Net connection string values?Oracle:如何在 ODP.Net 连接字符串值中允许前导/尾随空格?
【发布时间】:2013-12-04 10:25:58
【问题描述】:

我的 C# 应用程序使用以下连接字符串格式连接到 Oracle:

Data Source=tnsEntry;User Id=myUsername;Password=myPassword;

现在,如果有一个用户 ID 以空格开头,如 ' abc'(不包括引号),我如何在连接字符串中指定它?将其放在单引号/双引号中会导致错误 Ora-1017: Invalid username/password。

使用 Oracle.DataAccess,版本=2.112.3.0。连接到 Oracle 11g。

在这个最小样本中可重现:

using System;
using Oracle.DataAccess.Client;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            var con = new OracleConnection("User Id=\" abc\";Password=system05;Data Source=REFUPG141");
            try
            {
                con.Open();
                Console.WriteLine("connected.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
    }
}

【问题讨论】:

  • 我认为创建一个带有前导/尾随空格的用户是不可能的,所以为什么不直接修剪它们呢?
  • @haki 这是可能的。
  • C#代码中的连接字符串前不能用@吗?也可以在这里查看解决方案:stackoverflow.com/questions/3824351/…

标签: c# .net oracle odp.net


【解决方案1】:

双引号包围用户名对我有用:

请注意,创建用户时需要使用双引号:

SQL> create user "  DUMMY" identified by "pass";

User created.

SQL> grant connect, create session to "  DUMMY";

Grant succeeded.

SQL> conn "  DUMMY"/"pass";
Connected.

然后在 .NET 中我使用了这个连接字符串并且工作正常:

Data Source=localhost/mySid;User Id="  DUMMY";Password=pass

[编辑] 重要信息:

我正在使用Managed .NET Oracle Provider

【讨论】:

  • 我今天使用您提到的托管 .NET Oracle Provider 进行了尝试。仍然没有让我感到惊讶。这是否特定于我的特定 Oracles 服务器实例?
  • 这很奇怪。是的,可能是您的 Oracle 版本。这里我运行的是 Oracle 11g。
  • @Karan:另外,能否请您发布您正在运行此问题的代码(连接部分)?
  • Oracle 11g 也在这里。另外,我现在在原始帖子中添加了代码。
猜你喜欢
  • 2019-02-02
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
相关资源
最近更新 更多