Toon posts:

C++ Sql Connection

Pagina: 1
Acties:

Verwijderd

Topicstarter
Helloz,

In Visual C++, heb ik een routine gemaakt, om de inhoud van een sql tabel (afkomstig van een internet server) op het scherm te kletteren. Niet echt spannend. Hoe dan ook, dit werkt vanaf 98/2k client met een router internet verbinding, maar niet met een dial up verbinding. Ik gebruik hiervoor het win32 commando SQLDriverConnect. (Zonder dsn dus).

retcode = SQLDriverConnect(hdbc,hwndApp, (SQLCHAR*) "driver={SQL server};Server=server_ip;uid=user_id;pwd=db_pwd;database=db",SQL_NTS,&sql_ret_string[0],1024,&sql_ret_int,SQL_DRIVER_NOPROMPT);

Weet iemand de oorzaak / oplossing van dit probleem, of kan er iets zinnigs over zeggen. Heb al gezocht google microsoft search, zusje geraadpleegd (big mistake).

Anyone?

Verwijderd

"het werkt niet" is nogal algemeen, wat voor foutmelding/retcode krijg je?

Verwijderd

Topicstarter
Zucht, je had me zusje kunnen zijn. ;-)
Maarre je hebt natuurlijk gelijk. De foutcode krijg je pas,
als je door de 'retcode' te gebruiken samen met niet minder dan 7 !! andere parameters
de functie: SQLGetDiagRec aanroept. Uitkomst:

- 08001
- Client unable to establish connection The driver was unable to establish a connection with the data source. Deze melding krijg ik ook als ik met router een niet bestaande server probeer te benaderen. Dus met router verbinding wordt de server wel gevonden, en met een dialup verbinding niet, terwijl internet, email enz. uiteraard wel werkt.

Iemand die dit kan verklaren? (Overigens kan ik diezelfde server wel met ftp en vnc benaderen met dial up.)

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:21
Klopt je connection string wel?
Heb je de goede user, het goede pasword, de goede server en de juiste databank opgenomen? Heb je geen spelfouten etc...

https://fgheysels.github.io/


Verwijderd

Topicstarter
Connectie string klopt wel, zo niet dan zie ik dat terug in de foutmelding. Moet ook wel, anders zou ik met een router internet verbinding ook geen gegevens uit kunnen lezen. Als ik zoek op internet zie ik overal zo ongeveer dezelfde methodes, maar er wordt geen onderscheid gemaakt tussen een dialup, of een vaste verbinding. Mischien moet ik zelf de juiste adapter kiezen, met een dialup, daar zoiezo een netwerkkaart aanwezig is. M.a.w. mischien probeerd m'n programma, via m'n nic te connecten, wat niet de bedoeling is als ik met dial up ben ingebeld.
En zo ja, hoe?

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
Heb dit topic maar half gelezen, toch maar even deze opmerking. Negeer indien niet relevant:

zou het niet kunnen zijn dat je dial-up provider/je eigen pc verbindingen naar bepaalde poorten niet toestaat?

Weet je bijvoorbeeld op welke poort het geheel draaid en kan je eventueel met telnet wel met die bepaalde poort connecten (via je dial-up verbinding uiteraard)?

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Topicstarter
Bedankt voor je reactie. Echter, met de sql enterprise manager, kan ik wel een connectie maken met sql server, zonder extra instellingen, en wel op de standaard poort 1433.
Dus ik moet zelf blijkbaar nog iets in mijn programma implementeren , om ervoor te zorgen dat ik wel kan connecten. Maar ik weet dus niet wat. Alles wat ik nog toe heb gevonden over een win32 connectie, maakt geen onderscheid tussen beide verbindingen.

Verwijderd

Topicstarter
Hier m.b.v. window output, een wat meer gedetailleerde foutmelding.
(Ondertussen andere tabel op andere inet server uitgelezen, met hetzelfde euvel)


Afbeeldingslocatie: http://www.zaq.nl/gfx/sqerror.jpg


Verwijderd

Topicstarter
Niet dat het iemand interesseerd, maar 'k heb de oplossing (eindelijk) gevonden.
Bij deze dan, voor de volledigheid, en voor searchers in de toekomst.

De router / firewall moeten een drietal poorten toelaten, om voor een dial up connection via named-pipes te kunnen connecten. Het gaat om de volgende poort mappings:

('192.168.0.1' afhankelijk van desbetreffende server ip)

create protocol=udp inside_addr=192.168.0.1:137 outside_addr=0.0.0.0:137
create protocol=udp inside_addr=192.168.0.1:138 outside_addr=0.0.0.0:138
create protocol=tcp inside_addr=192.168.0.1:139 outside_addr=0.0.0.0:139

Dit blijkt nodig te zijn ook al configureer je multiprotocol / tcp-ip connecies op desbetreffende servers. Het enigste wat ik niet helemaal begrijp, is het feit dat dit bij router verbindingen niet nodig is, en dat dit onderscheid (bijna) nergens genoemd wordt.

extra info:
http://www.windows2000faq...Index.cfm?ArticleID=14168

Enne Infinitive had dus toch gelijk! Way to go, en dat terwijl, je't verhaal maar half gelezen had.


Ronald
Pagina: 1