Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[C#] Connectie naar DB2 op iSeries

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben nu al zeker een dikke week bezig met het proberen opzetten van een DB2 connectie naar onze AS400 maar ik krijg het maar niet aan de praat. Ik maak gebruik van de IBM.DATA.DB2.


C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
try
{
IBM.Data.DB2.DB2Connection con = null;
IBM.Data.DB2.DB2Command cmd = null;
IBM.Data.DB2.DB2DataReader rdr = null;

con = new IBM.Data.DB2.DB2Connection("Database=BANAAN;Server=BANAAN.FRUIT.COM;User ID=FRUITBOER;Password=APPEL");
                cmd = new IBM.Data.DB2.DB2Command();
                cmd.Connection = con;
                cmd.CommandText = "SELECT * FROM LIBCXFI75.EPOE FETCH FIRST 10 ROWS ONLY";
                cmd.CommandTimeout = 20;
                con.Open();

...
}catch(IBM.Data.DB2.DB2Exception myException)
{
                MessageBox.Show(myException.Message, "Error");
}


Ik krijg dan steeds de volgende error:

ERROR [08001] [IBM] SQL30081 N A communication error has been detected.
Communication protocol being used: "TCP/IP". Communication API begint used: "SOCKETS". Location where the error was detected: "10.198.10.6". Communication function detecting the error: "connect". Protocol specific error code(s): "10061","$","*". SQLSTATE=08001


Ik heb het ook al geprobeerd met andere connectionstrings maar ik blijf steeds diezelfde error krijgen.
Met de IBM Data Studio en iNavigator kan ik perfect connecteren met die database gebruik makend van dezelfde credentials, maar vanuit C# wil het maar niet lukken.

[ Voor 4% gewijzigd door Verwijderd op 04-07-2013 14:49 ]


Verwijderd

De connectie string ziet er normaal uit, maar volgens mij komt de fout pas wanneer je de verbinding probeert te openen.
Maar dit gedeelte ontbreekt bij de code die je hebt gepost.

Misschien met het volledige blok kan men zeggen wat er eventueel mis zou moeten gaan?

Verwijderd

Topicstarter
Ik heb de code verder aangepast. Zou het eventueel aan de DB2 server zelf kunnen liggen?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je zou eens met Wireshark o.i.d. kunnen kijken of er een wezenlijk verschil is tussen jouw connectiepoging en die van IBM Data Studio en iNavigator. Misschien zie je wel dat je een andere/verkeerde poort gebruikt ofzo. Niet geschoten is altijd mis :)

[ Voor 5% gewijzigd door RobIII op 04-07-2013 14:52 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Coca-Cola
  • Registratie: Maart 2001
  • Laatst online: 11:09
Heb je gegoogled op die error? Er zijn wel wat paginas en posts met precies dezelfde error. In de meeste gevallen gaat het inderdaad om een foute configuratie aan de client side (foute port)
IBM documentatie over die foutmelding:
http://publib.boulder.ibm....doc%2Fdoc%2Fsql30081.htm
en:
http://www-01.ibm.com/support/docview.wss?uid=swg21164785
iemand met precies hetzelfde probleem en iets wat lijkt op een oplossing (maar niet windows os):
http://bytes.com/topic/db2/answers/509586-db2-listener

Verwijderd

Wat Coca-Cola zegt inderdaad, de foutcode 10061 = WSAECONNREFUSED (10061) Connection refused.

Misschien moet je de correcte poort nummer eerst opgeven voor een verbinding?

Verwijderd

Topicstarter
Ik ben nu via Wireshark aan het uitvissen wat het juiste poortnummer is. Ik ging uit van een standaardpoort aangezien ik die tijdens de connectie met IBM Data Studio ook gebruik.

Verwijderd

Topicstarter
Het poortnummer bleek dus 8471 te zijn, ik krijg alvast geen fout meer hierop.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
try
            {
                // poort = 8471
                
                con = new IBM.Data.DB2.DB2Connection("Database=BANAAN;Server=BANAAN.FRUIT.COM:8471;User ID=FRUITBOER;Password=APPEL");
                cmd = new IBM.Data.DB2.DB2Command();
                cmd.Connection = con;
                cmd.CommandText = "SELECT NAMBL8 FROM LIBCXFIAZ.PFYSL8 FETCH FIRST 10 ROWS ONLY";
                cmd.CommandTimeout = 20;
                con.Open();
                rdr = cmd.ExecuteReader();
                
                // Always call read before accessing data.
                
                while (rdr.Read()){
                    Console.WriteLine(rdr.GetString(0));
                }
            
                
                rdr.Close();
                con.Close();

                
                
                
            }catch(IBM.Data.DB2.DB2Exception myException)
            {
                MessageBox.Show(myException.Message, "Error");
            }       


Maar nu blijft hij hangen op de con.Open(); Is er een manier om fout te achterhalen aangezien het niet in mijn Exception terecht komt?

[ Voor 2% gewijzigd door RobIII op 05-07-2013 09:33 . Reden: connectiestring anonimized :X ]


  • Coca-Cola
  • Registratie: Maart 2001
  • Laatst online: 11:09
Misschien wil je de data weer anonimiseren, dit lijkt mij een bestaande database server (althans, ik kan m pingen) en mogelijk dus ook een geldige username en wachtwoord?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
^ Heb ik maar even gedaan.
Geen idee of dit een "oefen DB" is ofzo, maar als dit productie-spul is en het wachtwoord uit je code is een daadwerkelijk "wachtwoord" (voor zover je dat zo mag noemen :X ) dan is dit het volgende datalek waiting to happen :X Ook als je 't niet hier had gepost.

[ Voor 10% gewijzigd door Creepy op 05-07-2013 12:50 . Reden: ;) ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • EfBe
  • Registratie: Januari 2000
  • Niet online
een aantal jaar geleden moest je iets installeren op de AS400 om ado.net connecties mogelijk te maken, ik weet totaal de naam van het package niet meer, en of dat tegenwoordig nog steeds zo is. Misschien dat je beheerder hier meer van weet?

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
Die db gegevens heb ik aangepast en uit mijn duim gezogen alvorens ik ze hier gepost heb hoor :)

  • Merethil
  • Registratie: December 2008
  • Laatst online: 21:39
Wat gebeurt er tijdens het steppen naar de con.open()? Is ie daadwerkelijk bezig, krijg je wat terug, logt ie iets? Of gebeurt er echt gewoon niets? Kans is dan dat je gewoon geen verbinding krijgt.
Volgens je Timeout mag hij 20 seconden erover doen, daarna zou hij een error moeten werpen... Dat gebeurt niet?

Verwijderd

Topicstarter
Ik heb de timeout er uitgehaald en een DB2Exception gezet over enkel de con.Open(). Tijdens het steppen ga ik naar de con.Open() maar verder debuggen gaat niet. Het programma geeft ook geen fout en ik krijg ook het form niet te zien.

Is het normaal dat DB2 zo karig is met informatie tijdens het debuggen?

Verwijderd

Ik weet niet of je een ExecuteScalar() methode hebt bij DB2, anders kijk eens wat er gebeurt als je een SELECT 1 doet en wat deze dan terug geeft?
Pagina: 1