.net C#5.0 VisualStudio 2012中iSeries的OLEDB连接字符串

.net C#5.0 VisualStudio 2012中iSeries的OLEDB连接字符串,.net,sql,ibm-midrange,.net,Sql,Ibm Midrange,我需要在C#5.0的VisualStudio 2012中使用OLEDB建立连接字符串 下面是代码: SQLConn = new SqlConnection("Data Source=STX;Persist Security Info=False; UserID=JG0149;Password=MYPASS;Initial Catalog=LIBJG"); 凭证在STX iSeries系统上运行得非常好 有许多使用VS 2010和C#4.0的示例,但它在C#5.0上的工作方式与www.co

我需要在C#5.0的VisualStudio 2012中使用OLEDB建立连接字符串 下面是代码:

 SQLConn = new SqlConnection("Data Source=STX;Persist Security Info=False;
  UserID=JG0149;Password=MYPASS;Initial Catalog=LIBJG");
凭证在STX iSeries系统上运行得非常好

有许多使用VS 2010和C#4.0的示例,但它在C#5.0上的工作方式与www.connectionstring,com/as-400中的类似/

SQLConn = new SqlConnection("Provider=IBMDA400;Data Source=STX;User Id=JG0149; Password=MYPASS;
Default Collection=LIBJG")
但VS2012不接受提供程序参数并请求其他参数

是否有人可以在VS2012中使用ConnectionString连接到iSeries以共享,请?

是专门用于SQL Server的

将和相关类用于其他提供程序

using (var connection = new OleDbConnection(
        "Provider=IBMDA400;Data Source=STX;User Id=JG0149; Password=MYPASS;Default Collection=LIBJG"))
{
    var command = new OleDbCommand("SELECT NOW() FROM SYSIBM.SYSDUMMY1", connection);
    connection.Open();
    var reader = command.ExecuteReader();
    if (reader.HasRows)
    {
        while (reader.Read())
        {
            Console.WriteLine(reader.GetString(0));
        }
        reader.Close();
    }
    connection.Close();
}
我在Visual Studio 2012/.NET 4.5中验证了上述内容


微软似乎正在推动ODBC的回归和OLEDB的逐步淘汰

市场正在从OLEDB转向ODBC,着眼于支持PHP和多平台解决方案

我们鼓励您在开发应用程序的新版本和未来版本时采用ODBC

专门用于SQL Server

将和相关类用于其他提供程序

using (var connection = new OleDbConnection(
        "Provider=IBMDA400;Data Source=STX;User Id=JG0149; Password=MYPASS;Default Collection=LIBJG"))
{
    var command = new OleDbCommand("SELECT NOW() FROM SYSIBM.SYSDUMMY1", connection);
    connection.Open();
    var reader = command.ExecuteReader();
    if (reader.HasRows)
    {
        while (reader.Read())
        {
            Console.WriteLine(reader.GetString(0));
        }
        reader.Close();
    }
    connection.Close();
}
我在Visual Studio 2012/.NET 4.5中验证了上述内容


微软似乎正在推动ODBC的回归和OLEDB的逐步淘汰

市场正在从OLEDB转向ODBC,着眼于支持PHP和多平台解决方案

我们鼓励您在开发应用程序的新版本和未来版本时采用ODBC


我可以给你三个有效的连接字符串。我在VS2012中使用它们来连接iSeries V6R1M0

使用IBM DB2 for i.NET提供程序

DataSource=*ServerIP*;UserID=*user*;SchemaSearchList="*list of libraries separated by commas*";Database=*database_name*;PersistSecurityInfo=True
为OLE DB使用.NET Framework数据提供程序

Provider=IBMDA400.DataSource.1;Data Source=*ServerIP*;Persist Security Info=True;OLE DB Services=-1;User ID=*user*;Initial Catalog=*database_name*;Catalog Library List="l*ist of libraries separated by commas*"
在Web服务中使用的连接

DataSource=*ServerIP*; Default Collection='';User ID=*user*; Password=*password*;Data Compression=True; Connection Timeout = 180;
在最后一个示例中,我不使用SchemaSearchList也不使用Catalog Library List,因为当我们建立到iSeries的连接时,总是存在一个特定的库。在这个库中,我们放置了一个存储过程,我们总是在每个新连接中运行它,定义库列表

我知道这个问题有一年的时间,但对于需要帮助的人来说,这是又一次帮助

更新

DataSource=*ServerIP*; Default Collection='';User ID=*user*; Password=*password*;Data Compression=True; Connection Timeout = 180;

还有一件事,IBMDataProvider允许您在iSeries上建立到DB2的连接,这并没有任何问题,但当我们谈论VisualStudio集成时,很多次都很痛苦

例如,直到上周,我还在使用IBM客户机访问(iSeries的客户机软件)附带的IBM数据提供程序。我可以在VisualStudio2010中,在没有OLEDB的情况下,在我的所有应用程序中建立sql连接,但在2012年或2013年则不行

这是因为我的客户端访问是在VS2012之前发布的。上周我安装了一个客户端访问更新,现在我已经在VS2012和VS2013上与DB2 iSeries建立了sql连接。因此,您可以方便地使用与iSeries版本兼容的客户端访问的最新版本

此外,在安装客户端访问时,请检查这些文件夹中的machine.config文件

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
检查
dbProviderFactorys
标记及其内部的所有标记。客户端访问通常在安装时,保留这些错误格式


如果可能,为了获得最佳性能,当您有一个数据提供程序,该数据提供程序具有托管代码,并且由制作数据库服务器的同一家公司优化时,请不要使用ODBC或OLE DB。在这种情况下,IBM也不例外。

我可以给您三个有效的连接字符串。我在VS2012中使用这些连接到iSeries V6R1M0

使用IBM DB2 for i.NET提供程序

DataSource=*ServerIP*;UserID=*user*;SchemaSearchList="*list of libraries separated by commas*";Database=*database_name*;PersistSecurityInfo=True
为OLE DB使用.NET Framework数据提供程序

Provider=IBMDA400.DataSource.1;Data Source=*ServerIP*;Persist Security Info=True;OLE DB Services=-1;User ID=*user*;Initial Catalog=*database_name*;Catalog Library List="l*ist of libraries separated by commas*"
在Web服务中使用的连接

DataSource=*ServerIP*; Default Collection='';User ID=*user*; Password=*password*;Data Compression=True; Connection Timeout = 180;
在最后一个示例中,我不使用SchemaSearchList也不使用Catalog Library List,因为当我们建立到iSeries的连接时,总是存在一个特定的库。在这个库中,我们放置了一个存储过程,我们总是在每个新连接中运行它,定义库列表

我知道这个问题有一年的时间,但对于需要帮助的人来说,这是又一次帮助

更新

DataSource=*ServerIP*; Default Collection='';User ID=*user*; Password=*password*;Data Compression=True; Connection Timeout = 180;

还有一件事,IBMDataProvider允许您在iSeries上建立到DB2的连接,这并没有任何问题,但当我们谈论VisualStudio集成时,很多次都很痛苦

例如,直到上周,我还在使用IBM客户机访问(iSeries的客户机软件)附带的IBM数据提供程序。我可以在VisualStudio2010中,在没有OLEDB的情况下,在我的所有应用程序中建立sql连接,但在2012年或2013年则不行

这是因为我的客户端访问是在VS2012之前发布的。上周我安装了一个客户端访问更新,现在我已经在VS2012和VS2013上与DB2 iSeries建立了sql连接。因此,您可以方便地使用与iSeries版本兼容的客户端访问的最新版本

此外,在安装客户端访问时,请检查这些文件夹中的machine.config文件

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
检查
dbProviderFactorys
标记及其内部的所有标记。客户端访问通常在安装时,保留这些错误格式


如果可能,为了获得最佳性能,当您有一个数据提供程序,该数据提供程序具有托管代码,并且由制作数据库服务器的同一家公司优化时,请不要使用ODBC或OLE DB。在这种情况下,IBM不会例外。

您不能使用ODBC连接吗?IBM将提供OLEDB连接到AS400的驱动程序…ODBC连接在读取时工作得很好,但它们还有其他问题,因为SQLADapter需要一个索引表进行更新,即使该表在iSeries中作为视图进行索引,其SQL也与Microsoft不同。Oracle ODBC也会出现类似的问题。请记住,VS2012和C#5.0与其他版本相比是全新的