2009-11-26 150 views
-1

我有一个奇怪的问题。我正在开发一个使用firebird 1.5.6 .NET提供程序和Visual Studio 2005的项目。一切正常。然后我将项目转换为VS2008项目。现在我有问题,当我试图连接到Firebird数据库,我得到了一个错误:将项目从VS2005转换为VS2008后的Firebird连接错误

Index was out of range. Must be non-negative and less than the size of the collection. 
Parameter name: index. 

错误表明即使是当我打开连接。我在server type = Default中得到了这个错误,但是如果我设置了server type = Embedded那么我有可能打开连接。

我试图在另一台电脑上运行我的项目,并在那里工作。

可能是什么问题?

+0

您是否有此错误的堆栈跟踪? – 2009-11-27 11:05:46

+0

您是否尝试过最新的2.5.1 .net提供程序? http://www.firebirdsql.org/index.php?op=files&id=netprovider – 2009-11-27 11:18:34

+0

@Douglas Tosi。是的,我正在使用2.5.1 .NET提供程序。 – Jooj 2009-11-29 10:48:04

回答

0

也许这可能会帮助您在这里阅读article

希望这会有所帮助。

0

这是我得到的堆栈跟踪错误。

at System.Collections.ArrayList.get_Item(Int32 index) 
    at FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.GetServerVersion() 
    at FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.Attach(DatabaseParameterBuffer dpb, String dataSource, Int32 port, String database) 
    at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect() 
    at FirebirdSql.Data.FirebirdClient.FbConnectionPool.Create() 
    at FirebirdSql.Data.FirebirdClient.FbConnectionPool.CheckOut() 
    at FirebirdSql.Data.FirebirdClient.FbConnection.Open() 
    at DbAccess.Connect() in D:\Appi\Connection.cs:line 87 

和线路87:

   ... 
       conn.Open(); 
       ... 

我真的不知道该怎么办。

+0

奇怪的是,显然服务器没有返回服务器版本字符串。这是什么Firebird版本?你有没有尝试更新它? – 2009-11-30 17:43:08

+0

我解决了它。问题是我必须在Windows重启后重启FB服务器manualy。不知道为什么,但是我解决了这个问题。 – Jooj 2009-11-30 23:29:01

1

我在连接到Interbase时有同样的错误。 我修复它。

  1. 下载源代码NETProvider-2.6.5-src.7z
  2. 编辑文件GdsDatabase.cs 替换线 return this.GetDatabaseInfo(items, IscCodes.BUFFER_SIZE_256)[0].ToString();

    ArrayList ar = this.GetDatabaseInfo(items, IscCodes.BUFFER_SIZE_256); if (ar.Count > 0) return ar[0].ToString(); else return String.Empty;

  3. 重建项目

完成