2010-07-26 5 views
35

Próbuję zbudować aplikację sieci web .NET przy użyciu SQL do kwerendy AS400 bazy danych. To moje pierwsze spotkanie z AS400.Połącz się z AS400 przy użyciu .NET

Co muszę zainstalować na moim komputerze (lub serwerze AS400), aby się połączyć? (IBM iSeries Access dla systemu Windows?)

Jakie są składniki ciągu połączenia?

Gdzie mogę znaleźć przykładowe kody podczas tworzenia warstwy dostępu do danych za pomocą poleceń SQL?

Dzięki.

Odpowiedz

24

Potrzebujesz dostawcy danych AS400 .Net. Sprawdź tutaj: http://www-03.ibm.com/systems/i/software/access/windows/dotnet/index.html

Dla próbek ciąg połączenia, sprawdź tutaj: http://www.connectionstrings.com/as-400

Również sprawdzeniu Redbook dla przykładów kodu i podręczny. http://www.redbooks.ibm.com/redbooks/pdfs/sg246440.pdf

+0

Brak łącza pobierania dla tego dostawcy danych .NET. Czy to samo dotyczy AS400? – madatanic

+1

Zobacz ten link: http://forums.asp.net/p/1497318/3610952.aspx Zgodnie z tym, powinien on znajdować się w następującym folderze, o ile zainstalowano klienta IBM iSeries Access for Windows: C: \ Program Files \ IBM \ Client Access \ IBM.Data.DB2.iSeries.dll – dcp

+0

Przepraszam, może nie byłem pewien co do mojego pytania. Gdzie mogę uzyskać klienta IBM iSeries Access for Windows? – madatanic

0

Używam tego kodu i działa bardzo dobrze dla mnie!

Try 
     Dim sqltxt As String = "SELECT * FROM mplib.pfcarfib where LOTEF=" & My.Settings.loteproceso 
     dt1 = New DataTable 
     Dim ConAS400 As New OleDb.OleDbConnection 
     ConAS400.ConnectionString = "Provider=IBMDA400;" & _ 
     "Data Source=192.168.100.100;" & _ 
     "User ID=" & My.Settings.usuario & ";" & _ 
     "Password=" & My.Settings.contrasena 
     Dim CmdAS400 As New OleDb.OleDbCommand(sqltxt, ConAS400) 
     Dim sqlAS400 As New OleDb.OleDbDataAdapter 
     sqlAS400.SelectCommand = CmdAS400 
     ConAS400.Open() 
     sqlAS400.Fill(dt1) 
     grid_detalle.DataSource = dt1 
     grid_detalle.DataMember = dt1.TableName 
    Catch ex As Exception 
     DevExpress.XtraEditors.XtraMessageBox.Show("Comunicación Con El AS400 No Establecida, Notifique a Informatica..", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     Me.Close() 
    End Try 
9

Oto co zrobiłem, aby rozwiązać problem.

Zainstalowano IBM i Access for Windows. Nie darmo

przekazał następujące pliki DLL w projekcie

  • IBM.Data.DB2.iSeries.dll
  • Interop.cwbx.dll (jeśli dane Kolejka używany)
  • Interop.AD400.dll (Jeżeli dane kolejek wykorzystywanych)

dostęp do danych

using (iDB2Command command = new iDB2Command()) 
     { 
      command.Connection = (iDB2Connection)_connection; 
      command.CommandType = CommandType.Text; 
      command.Parameters.AddWithValue(Constants.ParamInterfaceTransactionNo, 1); 
      command.CommandText = dynamicInsertString; 
      command.ExecuteScalar(); 
     } 

String Connection

<add name="InterfaceConnection" 
connectionString="Data Source=myserver.mycompany.com;User ID=idbname;Password=mypassxxx; 
Default Collection=ASIPTA;Naming=System"/> 

UPDATE

IBM nie planuje wspierać IBM i Access for Windows na systemach operacyjnych niż Windows 8.1. Produkt jest wymiana IBM i Access Client Solutions

IBM i Access Client Solutions

0

Niedawno okazało się, że kierowca ADO.Net dostępny na Nuget. Mam dostęp do klienta iSeries zainstalowany na moim komputerze, więc nie mogę powiedzieć, czy działa on jako samodzielny, ale łączy się. Jedynym problemem jest to, że nie widzę żadnych tabel ani procedur. Myślę, że może istnieć schemat lub biblioteka lub coś, do czego wciąż nie dotarłem.Napiszę, jeśli znajdę odpowiedź. Tymczasem nadal mogę dostać się do serwera i napisać większość mojego kodu za pomocą adaptera NuGet.