+-
c# – Oracle数据库TNS密钥“数据源”的值长度超过了’128’的限制
所以我有一个连接到Oracle数据库的字符串,基本上我直接从sql开发人员那里复制了它,然后剪掉了空格.

我后来以编程方式添加了用户名和密码.问题是当我尝试打开SQLConnection对象时.我收到错误:

The value's length for key 'data source' exceeds it's limit of '128'

我对oracle TNS连接并不是很了解.我使用了这个连接字符串,因为当我粘贴它并在测试连接时它在向导中工作.而你所看到的实际上是我粘贴在TNS名称后Visual Studio生成的内容.

Data Source="(DESCRIPTION=(ADDRESS= (PROTOCOL=TCP)
(HOST=qprd-scan.website.com)(PORT=3726))(CONNECT_DATA=(SERVER=dedicated 
(SERVICE_NAME=DBprd_developer)))";

此数据源键大约已有160个字符.

我在看this post on the MSDN forums.

这家伙基本上会说要从数据源中删除一些其他部分并将它们放在其他地方.我只是不确定该怎么做.

The MSDN on connection strings并没有真正告诉我太多.

The MSDN on Connection strings and configuration files也没有帮助.

无论如何,如果被问到,我很乐意从app.config中显示更多我的代码或内容

最佳答案
您没有向我们展示您用于连接数据库的完整代码,但从注释到另一个答案您似乎正在使用OLE DB.我会避免使用它,特别是如果它似乎有一个数据源的128个字符的任意限制.

我还要指出,您也可以避免安装Oracle客户端,这是另一个应答者的建议.我对’即时’客户端没有太多经验,但是完整的客户端是一个大量的下载,并不是只需要能够将C#程序连接到Oracle.

相反,我们可以使用Oracle托管数据访问库.您可以使用NuGet安装它.去做这个:

>转到工具>库包管理器>包管理器控制台,
>确保在“默认项目”下拉列表中选择了正确的项目,
>输入

Install-Package odp.net.managed

这应该添加从NuGet下载库并将Oracle.ManagedDataAccess添加到项目的References.

然后,如果为Oracle.ManagedDataAccess.Client添加using指令,则以下代码应与Oracle数据库通信:

string connStr = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname>)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<service_name>)));User Id=<user>;Password=<password>";
Console.WriteLine("Connection string has length " + connStr.Length);
using (var connection = new OracleConnection() { ConnectionString = connStr })
{
    connection.Open();
    OracleCommand command = new OracleCommand("SELECT * FROM DUAL", connection);
    using (OracleDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            Console.WriteLine(reader.GetString(0));
        }
    }
}
点击查看更多相关文章

转载注明原文:c# – Oracle数据库TNS密钥“数据源”的值长度超过了’128’的限制 - 乐贴网