Toon posts:

[.net + oracle] null ref. probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
We proberen een connectie te krijgen met oracle.
Het enige wat we doen is inloggen, maar zelfs dit werkt niet.
We hebben diverse exception gebruikt o.a. Exception, OracleException en een nullreferenceException.

Tijdens conn.Open() springt hij naar de catch van de exception,
en in deze catch treedt de nullreference op bij exception.message.

de precieze melding die we krijgen is:

System.NullReferenceException: Object reference not set to an instance of an object. at Oracle.DataAccess.Client.OracleException.get_Message() at Oracle.DataAccess.Client.OracleException.ToString() at TestODP.WebForm1.Button1_Click(Object sender, EventArgs e)

Wat doen we?
Het enige dat we doen is een connectie openen naar oracle.
Wanneer de connectie mislukt, moet er een middels de exception een foutmelding worden gegenereerd. De melding wordt echter nooit gemaakt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:54
Hoe ziet die code eruit waarmee je een connectie probeert te maken naar Oracle?
Welke provider gebruik je trouwens ?

https://fgheysels.github.io/


  • guanpedro
  • Registratie: Maart 2002
  • Laatst online: 18-12-2025

guanpedro

Live forever or die trying

Welke connector gebruik je voor de Oracle DB, die van MS of die van Oracle? Wat is je connection string?

Edit: Net te laat :)

[ Voor 11% gewijzigd door guanpedro op 12-01-2005 11:52 ]

PC: MSI-NEO2FISR P4-2.6HT@2.8 Dual-channel GEIL-PC3500 Intel CSA GB-LAN 9600PRO Pioneer DVR106 Server: Dual Xeon-2GHz 3Ware 7500-12 11x120GB RAID5 GB-LAN RH 9 2.4.22 Digicam: Sony DSC-F717


  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 14:09

The Eagle

I wear my sunglasses at night

Gebruik je wel een user voor de connectie die uberhaupt verbinding mag maken met de DB?

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


Verwijderd

Topicstarter
We maken gebruik van de OraOdp van oracle (versie 9.2.0.401)

De code ziet er als volgt uit:

string connstr = "password=test;user id=test;data source=test";
OracleConnection conn = new OracleConnection (connstr);
conn.Open();
conn.Close();

Hier zit een try-catch omheen!

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Tebbes, probeer eenswat meer relevante code te plaatsen, en zet er eens code-tags omheen. De kans dat mensen dan kunnen zien wat er mis gaat, en waar, is wel wat groter. Copy-paste dus!

My personal website


  • guanpedro
  • Registratie: Maart 2002
  • Laatst online: 18-12-2025

guanpedro

Live forever or die trying

Verwijderd schreef op woensdag 12 januari 2005 @ 11:55:
We maken gebruik van de OraOdp van oracle (versie 9.2.0.401)
Je kan de nieuwe editie proberen iig:

http://www.oracle.com/tec...windows/odpnet/index.html

Volgens Oracle's sample moet dat wel aardig kloppen:

http://www.oracle.com/tec...late/ViewProducts.cs.html

Misschien zit er een bug in die versie van de connector dat de exception die de connector meegeeft null is.

En op het forum staaat hier ook wat over:

http://forums.oracle.com/...6&date=any&user=&range=10

En deze lijkt sterk op jouw probleem:

http://forums.oracle.com/...457863657074696f6e#588633

[ Voor 60% gewijzigd door guanpedro op 12-01-2005 12:06 ]

PC: MSI-NEO2FISR P4-2.6HT@2.8 Dual-channel GEIL-PC3500 Intel CSA GB-LAN 9600PRO Pioneer DVR106 Server: Dual Xeon-2GHz 3Ware 7500-12 11x120GB RAID5 GB-LAN RH 9 2.4.22 Digicam: Sony DSC-F717


Verwijderd

Topicstarter
De allerlaatste oracle odp kan niet worden gedownload want we zitten niet op 10g.

De code ziet er als volgt uit:
wachtwoord, user en database zijn correct gevuld.
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
private void Button1_Click(object sender, System.EventArgs e)
        {
            string connstr = "password="+this.tb_wachtwoord.Text+";user id="+this.tb_user.Text+";data source="+this.tb_database.Text;
            try
            {
                OracleConnection conn = new OracleConnection (connstr);
                conn.Open();
                conn.Close();
                this.l_melding.Text = "Oracle Connectie succesvol!";
            }
            catch (System.NullReferenceException exc)
            {
                this.l_melding.Text = "Oracle Connectie NIET succesvol (er is iets leeg): " + connstr + "<BR>" + exc.ToString();
            }
            catch (OracleException exc)
            {
                try
                {
                    this.l_melding.Text = "Oracle Connectie NIET succesvol: " + connstr + "<BR>" + exc.ToString();
                }
                catch (System.NullReferenceException exc2)
                {
                    this.l_melding.Text = "Oracle Connectie NIET succesvol (er is iets leeg): " + connstr + "<BR>" + exc2.ToString();
                }
            }
        }

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Object reference not set to an instance of an object
Dit wijst normaal gezien op het vergeten van een 'new'. Die staat er echter in jouw code die je geplaatst hebt wel. Staat die er in je code in je project ook? Op welke regel gaat het mis als je door je code heen stept? Even een breakpoitje zetten dus ...

My personal website


Verwijderd

Topicstarter
Hij probeert regel 6 uit te voeren.
DE debugger schiet naar regel 15.
Probeert 17 gaat vervolgens naar regel 19
en eindigt in 23.

[ Voor 1% gewijzigd door Verwijderd op 12-01-2005 12:16 . Reden: fieptout ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:54
Doe eens die try/catch in die catch weg, en vervang dat eens door gewoon
l_melding.Text = exc.Message;

Zet op die regel ook eens een breakpoint, en kijk eens of die exc een waarde heeft voor z'n InnerException.

[ Voor 36% gewijzigd door whoami op 12-01-2005 12:18 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
//Dat hebben we geprobeerd, maar dan krijgen we de melding: "null reference" in beeld.

o dat innerexception stond er nog niet bij.
Dat ga ik eens proberen.

[ Voor 44% gewijzigd door Verwijderd op 12-01-2005 12:19 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:54
Doe eens, voor regel 6 dit:
code:
1
System.Diagnostics.Debug.WriteLine ("password="+this.tb_wachtwoord.Text+";user id="+this.tb_user.Text+";data source="+this.tb_database.Text);

En kijk dan eens als hij die lijn uitgevoerd heeft wat er in je output console van VS.NET staat. Is die connectionstring dan wel juist?

[ Voor 8% gewijzigd door whoami op 12-01-2005 12:20 ]

https://fgheysels.github.io/


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Dus het gaat al mis bij het declareren van de connection...
Probeer het eens zonder de connstr meteen mee te geven aan de nieuwe connection? Eventueel later deze toewijzen. Wat is de aanroep van de new OracleConnection? Misschien verwacht die een object en niet een string?

My personal website


  • Equator
  • Registratie: April 2001
  • Laatst online: 12:02

Equator

Crew Council

🦺#Rodekruis #whisky #barista

Op regel 15 staat een catch die niet vooraf wordt gegaan door een try.

Verwijderd

Topicstarter
Het vreemde is we hebben het getest op een laptop waar de odp op draait en framework en is aangesloten op het netwerk en gebruik maakt van de db-server. Op de laptop werkt het top.

De applicatie die op de server draait met z'n eigen odp en framework en dezelfde database raadpleegd loopt fout en krijgt dus de melding

De versies van odp en framework zijn gelijk. en op de server heeft het gewerkt.

[ Voor 13% gewijzigd door Verwijderd op 12-01-2005 12:26 ]


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

CyberJ schreef op woensdag 12 januari 2005 @ 12:24:
Op regel 15 staat een catch die niet vooraf wordt gegaan door een try.
Op regel 15 wordt de eerste try afgevangen met een ander soort exception dan de eerste catch. Dan kun je zoveel catches neerzetten als je wil. Zo kun je verschillende errorhandlers maken voor verschillende errors.

My personal website


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:54
CyberJ schreef op woensdag 12 januari 2005 @ 12:24:
Op regel 15 staat een catch die niet vooraf wordt gegaan door een try.
Toch wel, een try kan meerdere catch statements hebben. Dit is geen probleem.
(Mocht dit fout gaan, dan zou dit al in een compile error resulteren).

https://fgheysels.github.io/


  • Equator
  • Registratie: April 2001
  • Laatst online: 12:02

Equator

Crew Council

🦺#Rodekruis #whisky #barista

Okay, weer wat geleerd.
Ik weet dat je geen try mag plaatsen zonder een catch statement, maar ik wist niet dat je meerdere catches mocht plaatsen bij een enkele try.

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:54
CyberJ schreef op woensdag 12 januari 2005 @ 12:29:
Ik weet dat je geen try mag plaatsen zonder een catch statement, maar ik wist niet dat je meerdere catches mocht plaatsen bij een enkele try.
Toch wel; dit zal bv ook compileren:

code:
1
2
3
4
5
6
try
{
}
finally
{
}


Geen catch dus...

Natuurlijk is het wel weer veel netter om de fouten die kunnen optreden af te vangen mbhv een catch.

[ Voor 13% gewijzigd door whoami op 12-01-2005 12:31 ]

https://fgheysels.github.io/


  • Equator
  • Registratie: April 2001
  • Laatst online: 12:02

Equator

Crew Council

🦺#Rodekruis #whisky #barista

Hmm, finally zal hij altijd executen, maar inderdaad voor het afvangen van error's (Exceptions) zou ik het nooit doen.

Maar goed.


@TS:
Ik zie in de connection string een database name. Is deze te herleiden op de server.
Ik bedoel daarmee: Kijkt de server naar de juiste tnsnames.ora file :?
tnsping naar de database string ala
code:
1
c:\>tnsping server_database

geeft een nette reply :?

[ Voor 3% gewijzigd door Equator op 12-01-2005 12:36 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:54
CyberJ schreef op woensdag 12 januari 2005 @ 12:35:
Hmm, finally zal hij altijd executen, maar inderdaad voor het afvangen van error's (Exceptions) zou ik het nooit doen.
Tuurlijk niet, want daar is het niet voor bedoeld.


TS: aangezien het blijkbaar wel werkt op een pc, en op een andere niet, zullen we het probleem ergens anders moeten zoeken denk ik...
Heb je al eens naar die innerException gekeken?
Ben je er 100% zeker van dat je connectionstring in ieder geval juist is?

https://fgheysels.github.io/


Verwijderd

Topicstarter
De innerException hebben we geprobeerd en de connectstring is voor 100% zeker goed.

  • Equator
  • Registratie: April 2001
  • Laatst online: 12:02

Equator

Crew Council

🦺#Rodekruis #whisky #barista

CyberJ schreef op woensdag 12 januari 2005 @ 12:35:
@TS:
Ik zie in de connection string een database name. Is deze te herleiden op de server.
Ik bedoel daarmee: Kijkt de server naar de juiste tnsnames.ora file :?
tnsping naar de database string ala
code:
1
c:\>tnsping servernaam_databasenaam

geeft een nette reply :?

  • EfBe
  • Registratie: Januari 2000
  • Niet online
10g werkt niet met 9i, althans, je kunt beter die van 9i gebruiken. Oracle had een update voor 9.2.0.401 (411) maar die gaf teveel problemen.

De code die hij geeft lijkt me correct, ik zou wel kijken of de tsnname inderdaad is gedefineerd op de client (mbv de 9i client's network configuration assistant) en wellicht de volgorde andersom doen: eerst tsnname, dan user, dan password (jaja, raar maar wellicht werkt het dan wel). Ik heb iig nog nooit deze error gezien met ODP.NET.

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


Verwijderd

Topicstarter
nou het probleem is verholpen, vraag me niet hoe.
Maar het zat aan de kant van oracle, een of andere nitwit heeft bepaalde instellingen die oracle nodig heeft aangepast waardoor de oraopd niet benaderd werd.

We waren bezig met een oracel 8 en 9 database en er werd dus hard verwezen naar 8.
Settings zijn door een vriend van me aangepast en nu loopt het weer als een trein.
Pagina: 1