因此,我有一个到Oracle数据库的连接字符串,基本上是我直接从sql developer复制了它,然后切掉了空白。
后来我以编程方式添加了用户名和密码。问题是,当我尝试打开SQLConnection对象时。我得到了错误:
The value's length for key 'data source' exceeds it's limit of '128'
我对OracleTNS连接的了解不多。我使用此连接字符串是因为当我将其粘贴并测试连接时,它可以在向导中工作。您所看到的基本上是我粘贴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个字符。
我在MSDN论坛上正在看这篇文章。
这个家伙基本上说要从数据源中切出一些其他部分,然后将它们放在其他地方。我只是不太确定该怎么做。
关于连接字符串的MSDN并没有真正告诉我太多。
有关连接字符串和配置文件的MSDN也无济于事。
无论如何,如果有要求,我很乐意显示更多来自app.config的代码或内容
您尚未向我们展示用于连接数据库的完整代码,但是从注释到另一个答案,您似乎正在使用OLE DB。我会避免使用它,尤其是对于数据源来说,它似乎有128个字符的任意限制。
我还要指出的是,您也可以避免按照另一个回答者的建议安装Oracle客户端。我对“即时”客户端没有太多的经验,但是完整的客户端下载量很大,并且不必仅能将C#程序连接到Oracle。
相反,我们可以使用Oracle托管数据访问库。您可以使用NuGet安装它。去做这个:
Install-Package odp.net.managed
这应该从NuGet中下载该库,并将Oracle.ManagedDataAccess添加到您的项目的References中。
然后,如果为添加using指令Oracle.ManagedDataAccess.Client,则以下代码应与Oracle数据库对话:
using
Oracle.ManagedDataAccess.Client
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)); } } }